重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
编译程序的时候 加上 -g 选项,它能在程序中加入调试信息。从而可以
成都创新互联公司从2013年成立,是专业互联网技术服务公司,拥有项目网站建设、成都网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元耀州做网站,已为上家服务,为耀州各地企业和个人服务,联系电话:18980820575
使用GDB调试。
例如: gcc test.c -g -o test
然后 输入 gdb test ,进入gdb 调试, list 命令列出代码。
在哪一行设置断点就输入 break n ,
比如在第10行 就是 break 10 ,
run 是运行程序,到断点出 就停止,
print 变量名 可以观察变量的值,
cont 是继续运行,
n 是 next ,一步一步执行
你上网再搜索一些 关于 gdb 的信息 ,就可以了
gdb是GNU开源组织发布的一个强大的Linux程序调试工具,比图形化的调试工具更强大,主要来调试C/C++语言程序。
Debug 版本的可执行程序包含调试信息,用于程序员调试程序。
Release 版本的可执行程序往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以方便用户使用。
用gcc/g++编译时,要加上-g选项生成debug版本的可执行程序,否则就无法使用gdb调试了。
r 表示开始run, 如果在运行的过程中发生了错误,比如segmentation fault,可以查看此时的出错源代码:
通过b或者break设置断点,断点的设置可以通过函数名、行号、文件名+函数名、文件名+行号以及偏移量、地址等进行设置。
比如在function Peer_auto_save上设置断点,在peer.c的第136行设置断点:
从断点处继续运行
退出gdb
在Linux断点调试命令窗口中读取数据,可以使用以下命令:
1. x/nfu addr: 使用指定的格式和大小从指定地址读取数据。n表示要读取的数据数量,f表示数据格式,u表示数据大小。
2. info registers: 查看当前程序中各个寄存器的值。
3. disassemble: 查看当前程序指令的汇编代码。
4. print: 打印当前程序的变量的值。
5. stepi/si: 执行一条汇编指令。
6. nexti/ni: 执行一条汇编指令,但不进入函数体内部。