GDB调试多线程

GDB调试多线程,多线程顾名思义就是实现多个线程并发执行,简单的说就是同时处理多项任务。我们在开发过程中会经常使用到多线程,当然出现的问题也是不可避免的。

GDB non-stop模式

GDB non-stop模式,GDB 调试多线程程序 一节提到,对于调试多线程程序,GDB 默认采用的是 all-stop 模式,即只要有一个线程暂停执行,所有线程都随即暂停。

GDB后台执行调试

GDB后台执行调试,前面章节中,我们已经接触了很多调试命令,如 run(r)、continue(c)、next(n)等,借助它们即可操控 GDB 调试目标程序。有些读者可能已经注意到,这些调试命令在执行过程中,是无法使用其它 GDB 调试命令的。

GDB调试多进程

GDB调试多进程,GDB 调试器不只可以调试多线程程序,还可以调试多进程程序。对于 C 和 C++ 程序而言,多进程的实现往往借助的是 `<unistd.h>` 头文件中的 fork() 函数或者 vfork() 函数。

GDB反向调试

GDB反向调试,读到本节,我们已经学会了借助 GDB 调试器对代码进行单步调试和断点调试。

GDB信号处理

GDB handle命令:信号处理,C、 C++ 程序中,信号常常作为进程间通信的一种重要手段。

GDB查看栈信息

GDB frame和backtrace命令:查看栈信息,当程序因某种异常停止运行时,我们要做的就是找到程序停止的具体位置,分析导致程序停止的原因。

GDB编辑源码

GDB编辑源码,本节主要讲解的是在 GDB 内对源文件中的代码进行修改和查找,分别对应 GDB 中的 edit 命令和 search 命令,下面是对这两个命令的详细介绍。

GDB命令帮助

GDB help命令:查看目标命令的具体用法,截止到本节,我们接触了大量的 GDB 命令,甚至很多命令还拥有不同的语法格式和参数。这就产生一个问题,如何才能记住它们呢?