时间:2021-07-01 10:21:17 帮助过:14人阅读
一、相关信息了解
1、程序的发布有两种模式:" debug " 和 " release "
2、Linux下gcc / g++ 产生的可执行程序默认是 " release " 模式
3、使用gdb进行调试时,必须在生成可执行程序的时候加上 -g 选项
为啥? 以便生成gdb调试所需要的调试符号的信息,如果不加该选项,调试时相关调试操作是不能狗进行使用的
二、gdb的基本操作
< l / list > 后接数字,显示前后各5行的代码,接着上次的位置往下列,每次列10行
后接函数名,显示函数的内部代码
< r / run > 运行程序
< n / next > 逐过程,单条执行
< s / step > 逐语句,进入函数调用
< b / break > 打断点
b # 在某行打上断点
b 函数名 在该函数的头部打上断点
disable Num 该行断点禁用
enable Num 该行断点启用
i b ( info breakpoints ) 查看断点信息
delete breakpoints [ ] [ ] 内部不加信息断点表示删除全部断点,加数字表示删除某个断点
< p / print > 打印表达式的值,通过表达式可以修改变量的值或调用函数
< i locals > 打印当前作用域的临时变量的值
< c / continue > 继续执行
< display > [ 变量名 ] 跟踪变量的值
< bt / where > 查看调用堆栈
< q / quit > 退出gdb
三、readelf命令调用
是什么? 用来显示ELF格式目标文件的信息,可通过参数选项来控制显示一些特定信息 *>ELF格式文件:是一种用于二进制文件、可执行文件、目标代码、共享库和核心转储格式文件 *>ELF文件组成部分:ELF头、程序头表、节和节头表组成 干什么? 1>查看共享库的依赖库( NEEDED )和搜索名 ( SONAME ) readelf -d <file_name> 2>显示ELF头信息 readelf -h <file_name> 与objdump命令的区别: objdump使用了bfd库进行文件读取,而readelf并没有,且另写一段代码,对一些条件判断并不是很严格; readelf可以显示调试信息,而objdump并没有,但objdump经过简单处理也可以实现调试信息的显示Linux_gdb调试器
标签:运行程序 文件组 inf ade 处理 info splay size linux