Re: How to check if .gdbinit macros have been loaded?

Martin Simmons <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
>>>>> On Wed, 11 Aug 2021 14:09:06 +0000 (UTC), Mahmood Naderan said:
> 
> >What makes you think these commands (macros) will be called
> >automatically?  I think you have to call them yourself from the gdb
> >command line. 
> >BTW, the "show user" command will tell you if a particular user defined
> command exists.
> 
> Hi Martin,
> Yes if I run ''show user" I see the functions defined in the .gdbinit file.
> 
> I tried your suggestion by manually calling one of the functions which is 'dp 3' [1]. However, it fails with the following error:
> 
> 
> accel-sim.out: shader.cc:1657: unsigned int shader_core_ctx::translate_local_memaddr(address_type, unsigned int, unsigned int, unsigned int, new_addr_type*): Assertion `localaddr % 4 == 0' failed.
> 
> Program received signal SIGABRT, Aborted.
> __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
> 50      ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
> (gdb) dp 3
> Dumping pipeline state...
> 
> Program received signal SIGSEGV, Segmentation fault.
> 0x00007ffff7ba9468 in gpgpu_sim::dump_pipeline (this=0x0, mask=69, s=3, m=0) at gpu-sim.cc:2028
> 2028      for (unsigned i = 0; i < m_shader_config->n_simt_clusters; i++) {
> The program being debugged was signaled while in a function called from GDB.
> GDB has restored the context to what it was before the call.
> To change this behavior use "set unwindonsignal off".
> Evaluation of the expression containing the function
> (gpgpu_sim::dump_pipeline(int, int, int) const) will be abandoned.
> 
> 
> 
> I don't know if the .gdbinit functions can be used after the program receives segmentation fault.

Was it actually SIGABRT that stopped the program initially, rather than
segmentation fault?

> Any thoughts on that?

The segmentation fault message says this=0x0, which probably causes it.
The value of "this" comes from gdb's evaluation of
GPGPU_Context()->the_gpgpusim->g_the_gpu so maybe that is NULL at that
point in the program?

__Martin


> 
> 
> 
> [1] https://github.com/gpgpu-sim/gpgpu-sim_distribution/blob/master/.gdbinit#L10
> 
> 
> Regards,
> Mahmood
> 
> 
> 
> 
> 
> 
> On Monday, August 9, 2021, 4:31:34 PM GMT+2, Martin Simmons <[email protected]> wrote: 
> 
> 
> 
> 
> 
>>>>> On Sun, 8 Aug 2021 13:28:32 +0000 (UTC), Mahmood Naderan via Gdb said:
> > 
> > Hi
> > 
> > I use a .gdbinit [1] file which is supposed to print some debug information when the program is being run. 
> > When I run GDB, the first printf is written on the screen. So, that means the .gdbinit file has been loaded.
> > However, I don't see the rest of the information that must be printed on the screen. There are a lot of printf for this purpose.
> 
> The other printfs are inside define ... end, so you will only see them
> when the named command is used.
> 
> 
> > How can I be sure that the rest of the macros are called? Maybe they hit errors and I am not able to see those errors.
> 
> 
> What makes you think these commands (macros) will be called
> automatically?  I think you have to call them yourself from the gdb
> command line.
> 
> BTW, the "show user" command will tell you if a particular user defined
> command exists.
> 
> __Martin
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.