There is the PCEvent class (see src/cpu/pc_event.hh) that's used for
breakpoints, skipping kernel functions, etc.  You could create a subclass
of that to generate a checkpoint and then "schedule" it from python.

Steve

On Thu, Aug 6, 2015 at 7:03 AM Lingxiao Jia <[email protected]> wrote:

> Thanks, Steve. I know the pseudo-instruction stuff, but I do want to
> generate checkpoint at certain PC.
>
> On Thu, Aug 6, 2015 at 3:38 AM, Steve Reinhardt <[email protected]> wrote:
>
>> If you're just trying to generate a checkpoint at a particular point in a
>> program, you can also insert a pseudo-instruction in the program to cause a
>> checkpoint to be generated without having to figure out the PC value.
>>
>> Steve
>>
>>
>> On Wed, Aug 5, 2015 at 11:34 AM Lingxiao Jia <[email protected]>
>> wrote:
>>
>>> Thanks, Patrick. I think it at least gives me a way to get access to the
>>> pc.
>>> Of course it would be ideal if there is any way that can directly access
>>> the pc without getting the address of the thread first.
>>>
>>> On Wed, Aug 5, 2015 at 12:42 PM, Patrick <[email protected]> wrote:
>>>
>>>> Lingxiao,
>>>> ​​
>>>> In lieu of a response from someone else with more gem5 expertise, I
>>>> thought this might help.
>>>>
>>>> (I assume you've seen this page: link
>>>> <http://www.m5sim.org/Debugger_Based_Debugging>.)
>>>>
>>>> I put a breakpoint in src/cpu/simple/base.cc in the BaseSimpleCPU
>>>> constructor. After it allocates a "SimpleThread" for its "thread" member, I
>>>> can get the address of "thread." Then, at another point in the program, I
>>>> can use that address to examine the pc member of "thread" like this
>>>> (assuming the address of "thread" is 0x385e9c0):
>>>>
>>>> (gdb) call ((SimpleThread*)0x385e9c0)->pcState()
>>>> $6 = {<GenericISA::UPCState<unsigned long>> =
>>>> {<GenericISA::SimplePCState<unsigned long>> = {<GenericISA::PCStateBase> =
>>>> {_pc = 4194710, _npc = 4194718}, <No data fields>}, _upc = 0, _nupc = 1},
>>>> _size = 0 '\000'}
>>>>
>>>> ​A caveat is that gdb won't let me print out the address of "thread".
>>>> When I try to print it in gdb, I get this error:
>>>>
>>>> (gdb)​ p thread​
>>>>
>>>> ​A syntax error in expression, near `'.
>>>>
>>>>
>>>> ​My guess is that it's because "thread" is a keyword in gdb. In the
>>>> code, I stored the value of "thread" in a variable with a different name,
>>>> and it let me print the other variable.
>>>>
>>>> ​I don't know if this answers your question. If it does, I would guess
>>>> there's probably a better way than this. Maybe someone else can give input.
>>>>
>>>> Hope this helps,
>>>> Patrick​
>>>>
>>>> On Tue, Aug 4, 2015 at 10:31 AM, Lingxiao Jia <[email protected]>
>>>> wrote:
>>>>
>>>>> Hello all,
>>>>>
>>>>> I am new to gem5. I want to use gdb to inspect what is going on inside
>>>>> the simulator in SE mode.
>>>>> Specifically, I want to stop at certain PC and make a checkpoint at
>>>>> that point, but I don't find an easy way to do that. The existing way to
>>>>> take checkpoints can only be taken at certain tick.
>>>>> I reviewed the source code and generally located where the PC is
>>>>> stored (in the ThreadState structure of the thread of the corresponding
>>>>> CPU).
>>>>> But since gem5 use swig to bridge python and C++, I am really confused
>>>>> if it is possible to access the PC globally in gdb?
>>>>>
>>>>> Thanks.
>>>>>
>>>>> --
>>>>>
>>>>> Best regards,
>>>>>
>>>>> Lingxiao Jia
>>>>>
>>>>>
>>>>> Electrical & Computer Engineering (ECE)
>>>>>
>>>>> The University of Texas at Austin (UT-Austin)
>>>>>
>>>>> _______________________________________________
>>>>> gem5-users mailing list
>>>>> [email protected]
>>>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> gem5-users mailing list
>>>> [email protected]
>>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>>>
>>>
>>>
>>>
>>> --
>>>
>>> Best regards,
>>>
>>> Lingxiao Jia
>>>
>>> 贾凌霄
>>>
>>>
>>> Electrical & Computer Engineering (ECE)
>>>
>>> The University of Texas at Austin (UT-Austin)
>>> _______________________________________________
>>> gem5-users mailing list
>>> [email protected]
>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>
>>
>> _______________________________________________
>> gem5-users mailing list
>> [email protected]
>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>
>
>
>
> --
>
> Best regards,
>
> Lingxiao Jia
>
> 贾凌霄
>
>
> Electrical & Computer Engineering (ECE)
>
> The University of Texas at Austin (UT-Austin)
> _______________________________________________
> gem5-users mailing list
> [email protected]
> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to