GDB使用
来源:互联网 发布:vmware上的mac补丁 编辑:程序博客网 时间:2024/06/05 17:22
系统启动
使用GDB调试程序前,编译时最好打开调试开关(如:gcc增加-g选项)
使用GDB启动程序: gdb 程序名
如: gdb main
使用GDB调试已存在的进程: gdb -pid 进程号
如:gdb -pid 12345
运行:run
设置断点:break 行号
如: break 30
显示断点信息: info break
删除所有断点:delete break
删除指定断点:delete break [断点号]
继续运行: continue
显示代码: list
显示堆栈:bt
显示当前地点:where
显示线程信息:info thread
切换线程:thread ID
在所有线程中相应的行上设置断点:break thread_test.c:123 thread all
在指定线程中相应的行上设置断点:break thread_test.c:123 thread 线程号
让一个或者多个线程执行GDB命令command: thread apply ID1 ID2 command
让所有被调试线程执行GDB命令command: thread apply all command
set scheduler-locking off|on|step 实际使用过多线程调试的人都可以发现,在使用step或者continue命令调试当前被调试线程的时候,其他线程也是同时执行的,怎么只让被调试程序执行呢?通过这个命令就可以实现这个需求。off 不锁定任何线程,也就是所有线程都执行,这是默认值。 on 只有当前被调试程序会执行。 step 在单步的时候,除了next过一个函数的情况(熟悉情况的人可能知道,这其实是一个设置断点然后continue的行为)以外,只有当前线程会执行
在linux平台下,设置core dump文件生成的方法:
1) 在终端中输入ulimit -c 如果结果为0,说明当程序崩溃时,系统并不能生成core dump。
2) 使用ulimit -c unlimited命令,开启core dump功能,并且不限制生成core dump文件的大小。如果需要限制,加数字限制即可。ulimit - c 1024
3) 默认情况下,core dump生成的文件名为core,而且就在程序当前目录下。新的core会覆盖已存在的core。通过修改/proc/sys/kernel/core_uses_pid文件,可以将进程的pid作为作为扩展名,生成的core文件格式为core.xxx,其中xxx即为pid
4) 通过修改/proc/sys/kernel/core_pattern可以控制core文件保存位置和文件格式。例如:将所有的core文件生成到/corefile目录下,文件名的格式为core-命令名-pid-时间戳. echo "/corefile/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
5)调试core文件,gdb 程序名 core文件名
- gdb使用
- GDB使用
- gdb使用
- 使用GDB
- gdb 使用
- gdb使用
- GDB使用
- gdb使用
- GDB使用
- GDB使用
- GDB使用
- gdb 使用
- GDB使用
- Gdb使用
- GDB使用
- gdb 使用
- GDB 使用
- gdb使用
- 哈希算法
- Lua重新加载Lua文件
- 【codevs2980】买帽子
- 现世因果教育收益者分享
- Eclipse 里面 用RMI 插件来编写 RMI server and client的实际例子
- GDB使用
- RQNOJ 金明的预算方案
- 和为0的4个值(4 Values Whose sum is Zero UVa 1152)
- Masonry手码布局
- Lua增加ccbi
- 博客地址
- 哈希算法相关题目,简单
- 跟着Android官方培训课程学习,挖坑填坑记录
- tableview的滑动删除