Linux core dumps 的调试 .
来源:互联网 发布:淘宝模特招聘 编辑:程序博客网 时间:2024/05/21 09:21
上篇文章里提到如何生成core dumps,调试core dumps对于linux程序员也是家常便饭,这篇文章介绍在linux系统里如何通过gdb调试core dumps 文件。对于程序的编译,运行那是另外一个话题,此篇文章略过,只谈gdb命令和gdb调试core dumps文件。
gdb简单命令:
1、开始和停止
- gdb program.exe
gdb program.exe
装载程序
- run
run
运行程序,命令也可以用简写 r
- r < file
- r [argv]
r < file r [argv]
通过传递文件流, 或者参数运行程序
- help
help
帮助命令,简单列出gdb命令信息,简写为h
- help [name]
help [name]
列出具体命令帮助信息,name为命令名
- quit
quit退出gdb调试程序,简写为q
2、代码查看和断点
- list 20
list 20
从当前代码开始,列出20行代码 ,并且指向最后一行,下次再执行list,从当前行开始。如果list参数为空,列出当前10行代码,如果是两个参数,列出范围代码。简写为 l
- list function
list function
列出当前函数前后代码
- info
info
列出当前信息,比如info break,列出断点信息,info stack 列出当前堆栈信息,info frame 列出当前程序执行的程式信息。
- frame
frame
当前程序将要执行的程式信息,简写为f
- break
break
在当前frame下断点,简写为b
- b n
b n
在程序第n行下断点
- b function
b function
在函数内部第一条可执行语句下断点。
- delete n
delete n
删除第n个断点,如果不带参数,删除所有断点,简写为del
- watch i == 3
watch i == 3
设置观察判断语句,一旦程序执行到满足条件的地方,程序停止。这个功能对于循环调试帮助非常大。同时对于空指针,非法值调试起到事半功倍的效果。
- print var
print var
打印变量值和数据结构,简写为p
- display val
display val
每执行一条程式,都显示一次变量的值,其实watch才是最佳选择
- undisplay val
undisplay val取消对变量val的显示
3、单步调试
- next
next
执行下一条程式,遇到程序直接跳过,简写为n
- step
step
执行下一条程式,遇到函数,跳入函数,简写为s
- finish
finish
执行完程序,并暂停到函数下一行可执行程式。
- continue
continue
继续运行程序,直到下一个断点暂停,或者如果没有断点,程序执行完毕,退出。简写为c
- call function()
call function()
调用函数,并且可以传递参数,这对调试或者测试来说,太实用了,并且调用函数不影响当前程序的执行。
- set x value
set x value设置变量x的值为value,在调试程序的时候,可以设置假想值,调试程序还是很方便的。
4、堆栈调试
- backtrace
backtrace
显示当前执行程式的堆栈信息,简写为bt
- up
up
上一层堆栈
- down
down
下一层堆栈
- return
return从当前函数退出,在当前执行函数的下一条执行程式暂停。
gdb调试core dumps:
gdb program core
载入dump文件, program为产生dump的文件,这两个必须要一致,不然符号表和程序完全对不上,如果没有及时发现,会耽误很多时间。运行dump 文件后,程序会停在崩溃程式的那一行,然后就可以通过,print, up, down 这些命令来精确定位程序bug。
总结:
上面只是罗列出部分gdb命令,gdb, make, gcc 每个工具都足够写一本书的,可能很多人怕麻烦,认为我有Ide,啥都用鼠标搞定,为啥学习这些东西浪费时间。其实磨刀不误砍柴工,ide的可视化界面只不过是加了漂亮的外壳而已,不过不明白原理和基础,在学习和实用C/C++的道路上会遇到更多的问题,花费更加巨量的时间。可能开始感觉学习这些东西浪费时间了,但把这些东西搞透了,后面反而节省了更多的时间。那种方式更高效,显而易见。
- Linux core dumps 的调试
- Linux core dumps 的调试 .
- Linux core dumps 的生成
- 嵌入式Linux开打core dumps调试功能
- linux core的生成,调试
- linux的core文件调试
- Debugging Android core dumps
- enable daemon core-dumps
- Linux Mint 运行Eclipse崩溃退出 Failed to write core dump. Core dumps have been disabled.
- Linux Mint 运行Eclipse崩溃退出 Failed to write core dump. Core dumps have been disabled.
- Linux core dump的调试技术
- Linux core dump的调试技术
- Linux core dump的调试技术
- Linux下调试core文件的方法
- Linux core dump的调试技
- Linux core dump的调试技术
- Linux core文件的产生和调试
- Linux下调试core文件的方法
- 可惜我是水瓶座 (文/猫猫)
- 黑马程序员_java基础加强之枚举
- 黑马程序员---java学习笔记之交通灯
- (1)搭建opencv-android环境
- [SQLite]www.sqlite.org官网.NET最新版本所有内容下载
- Linux core dumps 的调试 .
- 无向图最小割算法。
- wm_keydown 和vm_char 区别以及 mfc DiapatchMessage派送消息返回之前的过程解析
- 去除掉屏幕上所有的UIAlertView
- 解析java.util集合类源码(List和AbstractList篇)
- linux spi驱动开发学习
- how to add a swap file on linux
- Enhancement to obsolete parent cursors if VERSION_COUNT exceeds a threshold (文档 ID 10187168.8)
- 2014.01.18 raid1