gdb 文件名 core文件 Backtrace(bt) 查看堆栈 多线程调试 info threads 显示当前可调试的所有线程 thread ID 切换当前调试的线程为指定ID的线程 attach process-id 在gdb状态下,开始调试一个正在运行的进程 thread apply all command 所有线程执行command 下面给大家一个好玩的多线程程序,答案就在某个线程的堆栈中,...
break thread_test.c:123 thread all(例:在相应函数的位置设置断点break pthread_run1) 在所有线程中相应的行上设置断点 thread apply ID1 ID2 command 让一个或者多个线程执行GDB命令command thread apply all command 让所有被调试线程执行GDB命令command set scheduler-locking 选项 command 设置线程是以什么方式来...
在 GDB 中,可以使用 backtrace 命令查看函数调用栈,找到出错的位置。还可以使用 frame 命令查看特定栈帧的信息,使用 print 命令打印变量的值,以确定问题所在。例如,如果在调试过程中发现某个变量的值为空指针,可能是内存分配失败导致的,可以进一步检查相关的内存分配代码。 四、GDB 使用其他要点 4.1调试参数列表 GDB...
查看栈回溯信息—— backtrace bt # 查看所有栈帧 bt 2 # 查看0~1号栈帧 bt -2 # 查看后两个栈帧 切换栈帧 f(frame) 2 # 查看2号帧 up/down 1 # 基于当前帧切换帧 查看帧信息 i f 1 # 查看 1 号帧信息 i locals # 查看当前帧所包含的所有局部变量的值 六、查看线程信息 info threads # 命...
当调式一个线程时,其他线程是否运行。 set pagination on/off: 在使用backtrace时,在分页时是否停止。 set target-async on/ff: 同步和异步。同步,gdb在输出提示符之前等待程序报告一些线程已经终止的信息。而异步的则是直接返回。 show scheduler-locking: 查看当前锁定线程的模式...
backtrace(或bt):查看各级函数调用及参数 finish:连续运行到当前函数返回为止,然后停下来等待命令 frame(或f):帧编号,选择栈帧 info(或i):locals查看当前栈帧局部变量的值 list(或l):列出源代码,接着上次的位置往下列,每次列10行 list行号:列出从第几行开始的源代码 ...
(gdb) info threads 假设我们发现线程 5 出现了问题,切换到该线程: (gdb) thread 5 (gdb) bt 通过查看调用栈,我们可以快速定位问题发生的地方。为了进一步调试,可以对该线程设置断点,使用continue或step来追踪问题的根源。 栈回溯与变量检查 当程序崩溃时,gdb 可以通过栈回溯(backtrace)功能帮助我们分析问题。栈回...
1. 查看正在运行的线程:`info threads`。该命令会列出当前正在调试的程序中的所有线程,每个线程都有一个唯一的标识符和线程编号。 2. 切换到指定线程:`thread `。使用该命令可以切换到指定标识符的线程,其中``是线程的标识符或线程编号。 3. 查看当前线程的调用栈:`backtrace`。该命令会显示当前线程的函数调用栈...
注意,当调试多线程程序时,该命令仅用于打印当前线程中所有栈帧的信息。如果想要打印所有线程的栈帧信息,应执行"thread apply all backtrace"命令。 【diaplay】: 和print 命令一样,display 命令也用于调试阶段查看某个变量或表达式的值,它们的区别是,使用 display 命令查看变量或表达式的值,每当程序暂停执行(例如单步...
backtrace 命令(简写为 bt)用来查看当前调用堆栈。接上,redis-server 现在中断在 anet.c:452 行,可以通过 backtrace 命令来查看当前的调用堆栈: (gdb) bt #0 anetListen (err=0x5555558d4930 <server+560> "", s=6, sa=0x5555558d99a0, len=28, backlog=511) at anet.c:452 ...