Linux下调试器GDB的简单使用图解 今天药忘吃喽~ 2022-10-07 00:42 152阅读 0赞 gdb是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 当前是虚拟机上的Ubuntu系统;敲Ctrl+Alt+t,打开控制台终端; which gcc命令,查看gcc的安装目录; gcc -v命令,查看gcc版本; ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JjYm9ibzIxY24_size_16_color_FFFFFF_t_70][] 命令行输入 vi test.c,回车,进入vi编辑器编辑test.c的代码;进入以后,敲i键,进入vi的插入模式,然后可以输入代码;输入完,敲ESC退出插入模式,再敲冒号,切换到底行模式,此时在编辑器底部出现冒号;在冒号后面输入wq,回车,保存退出; ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JjYm9ibzIxY24_size_16_color_FFFFFF_t_70 1][] 看一下test.c有了; ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JjYm9ibzIxY24_size_16_color_FFFFFF_t_70 2][] 然后用gcc命令编译;加上-g参数,这是把调试信息加入到构建出的可执行文件中;构建出可执行文件test; ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JjYm9ibzIxY24_size_16_color_FFFFFF_t_70 3][] 输入 gdb test,开始进入到test程序的调试;出现 (gdb) 的提示符; ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JjYm9ibzIxY24_size_16_color_FFFFFF_t_70 4][] 输入 L 命令,可查看源代码; ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JjYm9ibzIxY24_size_16_color_FFFFFF_t_70 5][] 输入 b 6,在第6行设置一个断点; 如果程序已经执行,输入 continue 或 c,继续执行; 输入 run 执行程序,遇到断点停止;停留在第1个断点,行6处,如下图; ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JjYm9ibzIxY24_size_16_color_FFFFFF_t_70 6][] 此时可以用 print 变量名,来查看变量的值,目前没有变量; 输入bt命令看一下;backtrace 命令可以在遇到断点或异常而暂停执行时显示栈帧,该命令简写为 bt; 也可以用 info reg 命令,查看寄存器; ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JjYm9ibzIxY24_size_16_color_FFFFFF_t_70 7][] 输入 step ,执行到下一句;再输入 step,已过了程序尾; ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JjYm9ibzIxY24_size_16_color_FFFFFF_t_70 8][] 单步执行的意思时根据源代码一行一行地执行。执行源代码中一行的命令为 next ,简写为 n。执行时如果遇到函数调用,想执行到函数内部,使用 step 命令,简写为 p。 如果要逐条执行汇编指令,可以分别使用 nexti 和 stepi 命令。 下回继续; [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JjYm9ibzIxY24_size_16_color_FFFFFF_t_70]: /images/20221005/7c9b9bbd5297449a85cd3cd4c1bf51bd.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JjYm9ibzIxY24_size_16_color_FFFFFF_t_70 1]: /images/20221005/43e0b434f34e4d518242a8e7128b7137.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JjYm9ibzIxY24_size_16_color_FFFFFF_t_70 2]: /images/20221005/d721c34e34964a82887ba047ca4bff21.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JjYm9ibzIxY24_size_16_color_FFFFFF_t_70 3]: /images/20221005/041b5f01de2c434c929d8d1e40a95632.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JjYm9ibzIxY24_size_16_color_FFFFFF_t_70 4]: /images/20221005/bc5a1f3531bc43dfb9250a7eacb90ed5.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JjYm9ibzIxY24_size_16_color_FFFFFF_t_70 5]: /images/20221005/5dfc5f06c4704c4f80642f89696c992f.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JjYm9ibzIxY24_size_16_color_FFFFFF_t_70 6]: /images/20221005/e7ef2ff17cf3482aa33893e6280c3bd8.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JjYm9ibzIxY24_size_16_color_FFFFFF_t_70 7]: /images/20221005/381278ed6a0d43f49328631b9f1aa953.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JjYm9ibzIxY24_size_16_color_FFFFFF_t_70 8]: /images/20221005/b9cc2808da6143f68e35329cfb4dae8e.png
还没有评论,来说两句吧...