Thanks, Steve. I will have a try. On Thu, Aug 6, 2015 at 2:14 PM, Steve Reinhardt <[email protected]> wrote:
> 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 > -- 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
