How to check if .gdbinit macros have been loaded?

Mahmood Naderan nt_mahmood@yahoo.com
Wed Aug 11 14:09:06 GMT 2021


>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.
Any thoughts on that?



[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 <qqxnjvamvxwx@dyxyl.com> 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



More information about the Gdb mailing list