GDB调试 痛定思痛。 2024-04-19 13:17 183阅读 0赞 ### 文章目录 ### * * 1、gdb调试编译准备 * 2、开启gdb调试 * 3、查看程序 l * 4、断点 . b * 6、运行跑程序 r * 7、查看调用栈 bt * 8、查看所有全局变量值 info local * 9、单步运行 n * 10、查看某个变量的值 : p varname * 11、每次执行时都显示某个变量的值 : display varname * 12、修改变量的值 p varname = var * 13、跳入函数内部 s * 14、觉得单步麻烦,直接运行完这个函数 finish * 15、直接将程序运行到某一行: until 20 * 16、查看当前代码运行到哪一行 f * 17、退出 ## 1、gdb调试编译准备 ## 编译时加上一定加上 -g选项 eg. gcc main.c -o main -g ## 2、开启gdb调试 ## 开启gdb gdb main \[图 \] ## 3、查看程序 l ## 命令 : l // 对应list的简写 显示某函数上下文内容: l print // 显示函数print上下文内容 ## 4、断点 . b ## 设置断点: b 10 // 在第10行设置一个断点 ,为是break 10的简写形式 b print // 在print 函数处设置断点 // 查看断点 info break // 简写 i break ![在这里插入图片描述][20190918181009358.png] // 禁止某断点 disable 1 // 禁止序列号为1的断点 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA4ODY1MzU_size_16_color_FFFFFF_t_70] // 重新使能某断点 enable 1 // 重新使能断点1 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA4ODY1MzU_size_16_color_FFFFFF_t_70 1] // 删除断点 d break 1 // 删除断点1 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA4ODY1MzU_size_16_color_FFFFFF_t_70 2] // 一次删除全部断点 d // 直接输入一个d命令删除全部断点 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA4ODY1MzU_size_16_color_FFFFFF_t_70 3] ## 6、运行跑程序 r ## 命令: r ,会跑到下一个断点处 ![在这里插入图片描述][20190918181713702.png] ## 7、查看调用栈 bt ## 命令:bt // breaktrace 的简写 ![在这里插入图片描述][20190918181856942.png] ## 8、查看所有全局变量值 info local ## 命令:info local ![在这里插入图片描述][20190918181931963.png] ## 9、单步运行 n ## 命令: n // 单步运行 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA4ODY1MzU_size_16_color_FFFFFF_t_70 4] ## 10、查看某个变量的值 : p varname ## 命令: p 变量名 eg. p start // 查看start变量的值 p &start // 查看变量start地址值 ![在这里插入图片描述][20190918182240187.png] ## 11、每次执行时都显示某个变量的值 : display varname ## 命令: display 变量名 eg. display start // 每次都显示start变量的值 display &start // 每次都显示start变量地址的值 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA4ODY1MzU_size_16_color_FFFFFF_t_70 5] ## 12、修改变量的值 p varname = var ## 命令1: p 变量名 = 要设置的值 eg. p start = 4 命令2: set val 变量名 = 要设置的值 eg. set val start = 4 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA4ODY1MzU_size_16_color_FFFFFF_t_70 6] ## 13、跳入函数内部 s ## 命令: s ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA4ODY1MzU_size_16_color_FFFFFF_t_70 7] 上图中当前程序执行在 main.c函数的第33行,该行对应函数print,按入s表示进入print函数内部 ## 14、觉得单步麻烦,直接运行完这个函数 finish ## 命令: finish ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA4ODY1MzU_size_16_color_FFFFFF_t_70 8] ## 15、直接将程序运行到某一行: until 20 ## 命令:until 20 // 直接运行到第20行 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA4ODY1MzU_size_16_color_FFFFFF_t_70 9] ## 16、查看当前代码运行到哪一行 f ## ## 17、退出 ## 方式一 命令: q 方式二 ctrl + d [20190918181009358.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/18/b007f15fa22140bba80eeed453ccf5ff.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA4ODY1MzU_size_16_color_FFFFFF_t_70]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/18/e1f19573464d46698a6a40e9d06451cb.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA4ODY1MzU_size_16_color_FFFFFF_t_70 1]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/18/b075a1ef9a2a4134a917b6e2a6284638.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA4ODY1MzU_size_16_color_FFFFFF_t_70 2]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/18/e93f51639930428cb9568b0fe39ac343.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA4ODY1MzU_size_16_color_FFFFFF_t_70 3]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/18/d3e58a401a824d318d26bbae8834522c.png [20190918181713702.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/18/754685b674d94188a3b9c25c3a5cb199.png [20190918181856942.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/18/678f051d3aed4302bff7cce9e5f60662.png [20190918181931963.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/18/a873cdeb77a84bd5b0c18ca5d3d2dd61.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA4ODY1MzU_size_16_color_FFFFFF_t_70 4]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/18/c77bb32831994650853908205bcec33a.png [20190918182240187.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/18/b98e0abfa8c545d7ba509f62688e0c24.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA4ODY1MzU_size_16_color_FFFFFF_t_70 5]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/18/94d2acadcfc94e0093d33147222612a7.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA4ODY1MzU_size_16_color_FFFFFF_t_70 6]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/18/825e84b7fed44ffbb76f6282c587777c.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA4ODY1MzU_size_16_color_FFFFFF_t_70 7]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/18/693e71171e634a938d35f5d0e1097c5d.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA4ODY1MzU_size_16_color_FFFFFF_t_70 8]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/18/f0f9f154ce494a7eb16317d7272713f0.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA4ODY1MzU_size_16_color_FFFFFF_t_70 9]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/18/940a8abefc41497e88d8acb6c1c70b68.png
相关 GDB调试 文章目录 * * 1、gdb调试编译准备 * 2、开启gdb调试 * 3、查看程序 l * 4、断点 . b *... 痛定思痛。/ 2024年04月19日 13:17/ 0 赞/ 184 阅读
相关 gdb 调试 信息显示命令 [info address][] [info registers][] [info files][] [info functions][ 灰太狼/ 2023年06月03日 15:58/ 0 赞/ 122 阅读
相关 GDB调试 不错的文章: [GDB调试][GDB] [GDB调试入门,看这篇就够了][GDB 1] [GDB]: https://blog.csdn.net/Hou_Rj/ar 淩亂°似流年/ 2023年05月31日 06:50/ 0 赞/ 3 阅读
相关 GDB调试 一.快速进阶 1.编译生成可执行文件 gcc -g test.c -otest 2.启动gdb gdb test 3.在main函数处打断点。 bre 爱被打了一巴掌/ 2022年09月24日 11:21/ 0 赞/ 393 阅读
相关 GDB 调试 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现G 朱雀/ 2022年08月27日 04:47/ 0 赞/ 449 阅读
相关 gdb 调试 基本用法 1. gcc -g xx.c xx 2. gdb xx 基本命令 1. start 启动程序, 默认停留在main程序的第一行 2. run 启 刺骨的言语ヽ痛彻心扉/ 2022年06月09日 11:26/ 0 赞/ 449 阅读
相关 gdb调试 在用gcc编程的时候可能会出bug,这时候就可以通过gdb这个工具进行调试,gdb调试的一定是直接有\.c 文件生成的bebug版本的可执行文件,否则,进入gdb之后敲入lis Dear 丶/ 2022年06月02日 07:55/ 0 赞/ 508 阅读
相关 gdb调试 要使用gdb调试,必须在源代码生成二进制程序的时候,加上-g选项 gdb常用命令: list/l + 行号:显示源代码,接着上次的位置往下列每次10行 li Love The Way You Lie/ 2022年05月14日 04:06/ 0 赞/ 448 阅读
相关 GDB调试 [https://www.cnblogs.com/HKUI/p/8955443.html][https_www.cnblogs.com_HKUI_p_8955443.html] 曾经终败给现在/ 2022年03月29日 17:38/ 0 赞/ 502 阅读
相关 GDB调试 另外有: Gdb+core调试技术 http://zhwen.org/xlog/?p=453 一、gdb简介和安装 GDB是GNU开源组织发 谁践踏了优雅/ 2022年01月22日 04:29/ 0 赞/ 502 阅读
还没有评论,来说两句吧...