gdb使用汇总

 

查看信号

i signals

设置SIGUSR两个信号不中断

handle SIGUSR1 SIGUSR2 nostop noprint

handle SIGHUP nostop noprint nopass
handle SIGCONT nostop noprint nopass

 

 

可以停留在当前线程

set scheduler-locking on

 

可以停留在源文件的某个位置

b postgres.cpp:2590 if strcmp(query_string, "SELECT * FROM gtest22c WHERE b * 3 = 6;") == 0

 

这个可以断住错误的地方

b errstart if elevel == 20

 

gdb

attatch

   detach     #调试结束,解除进程与gdb的连接,使进程继续运行;

 

   直接在gdb中把一个正在运行的进程连接到gdb中,以便于进行动态调试;使用attach命令:

   attach  <进程ID>

   当使用attach命令时,你应该先使用file命令来指定进程所联系的程序源代码和符号表;当gdb接到attach命令后的第一件事情就是停止进程的运行,你可以使用所有gdb的命令来调试一个已"连接"到gdb的进程,这就像你使用run/r命令在gdb中启动它一样.如果你要进程继续运行,那么,可以使用continue/c命令就可以了;

   detach:

   当你调试结束之后,可以使用该命令断开进程与gdb的连接(结束gdb对进程的控制),在这个命令执行之后,你所调试的那个进程将继续运行;

   如果你在使用attach命令把一个正在运行的进程连接到gdb之后又退出了gdb,或者是使用run/r命令执行了另外一个进程,那么刚才那个被连接到gdb的进程将会因为收到一个kill命令而退出;

   如果要使用attach命令,你的操作系统环境就必须支持进程;另外,你还需要有向进程发送信号的权力;

   使用attach命令的例子:

   gdb

   file <可执行程序名>   #指定进程所关联的程序源代码和符号表

   attach <进程ID>

   .....

   使用gdb的命令进行调试;

   .....

   detach     #调试结束,解除进程与gdb的连接,使进程继续运行;

 

https://www.cnblogs.com/whiteyun/archive/2011/10/17/2215532.html

 

 

.gdbinit使用

https://blog.csdn.net/bangdingshouji/article/details/52889937?spm=1001.2101.3001.6650.9&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-9.highlightwordscore&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-9.highlightwordscore

 

https://github.com/gdbinit/Gdbinit/blob/master/gdbinit

 

i thread显示所有线程

 

 

启用pdb调试
python -m pdb xxx.py
 
 

 

gdb 打印宏

 

参考https://blog.csdn.net/zhangjs0322/article/details/39666889

编译器默认没有把宏定义扩展信息编译进二进制文件。

通过man gcc查看说明,如下

编译时需添加-gdwarf-2和-g3两个参数。 加了-g3的参数后,gcc编译的时候,会将扩展的debug 信息编译进二进制文件里面,包括宏定义信息。 结论:

在CFLAGS参数后添加-g3 -gdwarf-2参数

重新编译、gdb调试宏,如下

img

 

./configure --prefix=/home/jiang/postgres/project --enable-depend --enable-cassert CFLAGS='-O0 -gdwarf-2 -g3 ' --enable-debug 

 

gdb内执行shell指令

 

两种方式,shell command | !command.

第一种是用内置指令shell.
第二种是用特殊符号!开头.

posted @ 2021-11-26 10:05  aaronwell  阅读(243)  评论(0)    收藏  举报