1、进程无法生成core文件,而是生成了crash文件:
修改:/proc/sys/kernel/core_pattern里面的内容为:/tmp/dumps/%e-%t
2、gdb启动带参数的程序:
如正常启动为:./a.out -c ./config/tmp.conf
1)gdb启动为:
gdb ./a.out
set args -c ./config/tmp.conf
2) 也可以直接启动 :gdb -q -ar ./a.out -c ./config/tmp.conf
3、如何根据反汇编查看问题挂到哪一行
disassemble
然后 list *address,可以确认挂到哪一行了
举例:
可以看到行号5731
4、多线程调试
1)查看所有线程信息 :info threads
2)查看所有线程堆栈:thread apply all bt
3)切换线程:thread <num>
4)在多线程调试时,可以设置其余线程阻塞状态
a、查看设置:show scheduler-locking
b、set scheduler-locking <on><off><step>
on:表示调试线程执行时,其余线程锁定,阻塞等待
off:表示不锁定其他线程
step:表示在单步调试时,只有当前线程运行,这样就可以避免next时跳到其他线程