
gdb
文章平均质量分 79
gdb 调试基础
wohu007
这个作者很懒,什么都没留下…
展开
-
gdb 笔记(13)— GDB TUI 和 CGDB(在 GDB 中显示程序源码、Ubuntu 安装 cgdb、libncurses5-dev : Depends: libtinfo5 )
gdb 代码可视化调试原创 2022-07-13 22:15:00 · 1508 阅读 · 0 评论 -
gdb 笔记(12)— 调试技巧(print 打印结果显示完整、为函数添加断点失效、多线程下禁止线程切换、调试多进程程序)
gdb 调试技巧原创 2022-07-12 22:15:44 · 2180 阅读 · 0 评论 -
gdb 笔记(11)— info 和 thread 命令(查看线程、切换线程)
gdb info 和 thread 命令原创 2022-07-12 19:51:29 · 14120 阅读 · 0 评论 -
gdb 笔记(10)— 检查内存泄漏、堆溢出、栈溢出、全局内存溢出、释放后继续使用
(Address Sanitizer)是一个 内存错误检测器,它可以发现很多内存相关的错误,比如内存泄漏、释放之后再次使用、堆内存溢出、栈溢出等。以下代码都使用编译。编写一段内存泄漏的示例代码,如代码清单所示。简单地使用 和 分配一块内存,但是不释放。...原创 2022-06-07 22:25:39 · 8016 阅读 · 0 评论 -
gdb 笔记(09)— 常用命令示例说明(run、continue、next、step、until、finish、return、jump、print、backtrace、frame、thread等)
gdb 常用命令列表原创 2022-06-06 22:37:36 · 6913 阅读 · 2 评论 -
gdb 笔记(08)— 查看栈回溯信息、切换栈帧、查看帧信息
当程序进行函数调用时,这些调用信息(比如在哪里调用等)称为栈帧。每一个栈帧的内容还包括调用函数的参数、局部变量等。所有栈帧组成的信息称为调用栈(或者调用堆栈)。当程序刚开始运行时,只有一个栈帧,即主函数 。每调用一个函数,就产生一个新的栈帧;当函数调用结束时(即从函数返回后),该函数的调用随之结束,该栈帧也结束。如果该函数是一个递归函数,则调用该函数会产生多个栈帧。查看栈回溯信息的命令是 。执行该栈回溯命令后,会显示程序执行到什么位置、包含哪些帧等信息。每一帧都有一个编号,从 0 开始。0 表示当前正在执原创 2022-06-05 22:38:14 · 11508 阅读 · 0 评论 -
gdb 笔记(07)— 自动显示变量值、显示源代码、监视变量或内存、查看内存
gdb 显示变量值原创 2022-06-04 23:12:38 · 10097 阅读 · 0 评论 -
gdb 笔记(06)— 查看当前函数参数、查看结构体/类的值、查看数组的值
1. 查看当前函数参数当程序在函数中暂停后,即可查看函数的参数。语法如下:info agrs或者i args使用示例(gdb) b fun_testBreakpoint 1 at 0x969: file demo.cpp, line 6.(gdb) rStarting program: /home/wohu/cppProject/book_debug/chapter_3.1/demo ret is 8Breakpoint 1, fun_test (a=10, str=0x5555原创 2022-06-03 22:51:15 · 15364 阅读 · 2 评论 -
gdb 笔记(05)— 启动程序、继续运行、继续运行并跳过当前断点 N 次、直到当前函数执行完成、单步执行、逐过程执行
1. 启动程序启动程序的命令为 run 或者 r ,一般用于调试一个程序。r 命令只在使用 gdb 启动被调试的程序时执行一次。比如使用 gdb 来启动 demo 程序,Shell 命令为:$ gdb demo然后进入 gdb 的调试窗口,这时程序被暂停,可以执行设置启动参数、设置断点等操作。然后在 gdb 中输入 run 启动程序,直到遇到第一个命中的断点为止,程序才会中断。(gdb) info bNo breakpoints or watchpoints.(gdb) b fun_test原创 2022-06-02 22:34:53 · 11492 阅读 · 0 评论 -
gdb 笔记(04)— 启用/禁用断点、启用断点一次、查看断点、删除断点、启用断点并命中N次、忽略断点前N次命中)
1. 启用、禁用断点如果一个断点被禁用,则该断点不会被命中,但是它仍然会在断点列表中显示。我们仍然可以通过 info b 来查看被禁用的断点,也可以通过启用断点命令来重新启用被禁用的断点。禁用断点的语法如下:disable 断点编号启用断点的语法如下:enable 断点编号假设我们已经设置了 3 个断点,现在要把 2 号断点暂时禁用,可以使用以下命令来禁用 2 号断点:disable 2如果要启用 2 号断点,可以使用以下命令:enable 2在禁用断点后,断点的 Enb原创 2022-05-31 23:10:29 · 9039 阅读 · 1 评论 -
gdb 笔记(03)— 某一行设置断点、为函数(单个唯一函数、多个同名函数、使用正则)设置断点、设置条件断点、设置临时断点
断点 breakpoint,即为了调试的需要,在程序中设置一些特殊标志,代码执行到这些具有特殊标志的位置时会暂停。一旦程序暂停,我们就可以查看或者修改程序运行的一些信息,比如内存信息、堆栈信息等,并且可以去检查程序运行的一些结果,去判断程序运行是否符合期望等。总而言之,断点就是程序中断(暂停运行)的地方。gdb 提供了一些与断点有关的命令,比如设置断点、查看断点、条件断点等,尤其是设置断点的方法和技巧。......原创 2022-05-30 22:49:14 · 19807 阅读 · 0 评论 -
gdb 笔记(02)— gdb 调试执行(启动调试、添加参数、附加到进程、调试 core 文件)
在编译程序时,使用 gcc 或者 g++ 时一定要加上 -g 选项,以便能够正常调试程序。1. 启动调试假设已有二进制文件如下,其中 chapter_3 为可执行文件$ lschapter_3 main.cpp Makefile student.cpp student.h teacher.cpp teacher.h$ 执行 gdb 可执行文件名 即可以启动调试,如下图:$ gdb chapter_3 GNU gdb (Ubuntu 8.1.1-0ubuntu1) 8.1.1C原创 2022-05-27 22:42:57 · 5956 阅读 · 0 评论 -
gdb 笔记(01)— gdb 简介、安装、常用功能
1. 简介gdb(GNU debugger)是 UNIX/Linux 系统中强大的调试工具,它能够调试软件并分析软件的执行过程,帮助我们调查研究程序的正确行为,还能用来分析程序崩溃的原因等。gdb 支持多种语言,可以支持 C/C++ 、Go、Java、Objective-C 等。2. 安装CentOS 安装sudo yum install gdbUbuntu 安装sudo apt-get install gdb检查是否安装成功:wohu@wohu-dev:~$ gdb -vGNU g原创 2022-05-25 20:35:39 · 760 阅读 · 0 评论