`
luckyclouds
  • 浏览: 111448 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

gdb调试多线程

阅读更多
gdb提供了以下供调试多线程的进程的功能:
thread THREADNO 一个用来在线程之间切换的命令。
info threads 一个用来查询现存线程的命令。
thread apply [THREADNO] [ALL] ARGS 一个用来向线程提供命令的命令。
注意:这些特性不是在所有gdb版本都能使用,归根结底要看操作系统是否支持。
如果你的gdb不支持这些命令,会显示出错信息:
(gdb) info threads
(gdb) thread 1
Thread ID 1 not known. Use the \ "info threads\ " command to
see the IDs of currently known threads.
gdb的线程级调试功能允许你观察你程序运行中所有的线程,但无论什么时候
gdb控制,总有一个“当前”线程。调试命令对“当前”进程起作用。
一旦gdb发现了你程序中的一个新的线程,它会自动显示有关此线程的系统信
息。比如:
[New process 35 thread 27]
不过格式和操作系统有关。
为了调试的目的,gdb自己设置线程号。
info threads
显示进程中所有的线程的概要信息。gdb按顺序显示:
1.线程号(gdb设置)
2.目标系统的线程标识。
3.此线程的当前堆栈。
一前面打*的线程表示是当前线程。
例如:
(gdb) info threads
3 process 35 thread 27 0x34e5 in sigpause ()
2 process 35 thread 23 0x34e5 in sigpause ()
* 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8)
at threadtest.c:68
thread THREADNO
把线程号为THREADNO的线程设为当前线程。命令行参数THREADNO是gdb内定的
线程号。你可以用info threads命令来查看gdb内设置的线程号。gdb显示该线程
的系统定义的标识号和线程对应的堆栈。比如:
(gdb) thread 2
[Switching to process 35 thread 23]
0x34e5 in sigpause ()
Switching后的内容取决于你的操作系统对线程标识的定义。

thread apply [THREADNO] [ALL] ARGS
此命令让你对一个以上的线程发出相同的命令ARGS,[THREADNO]的含义同上。
如果你要向你进程中的所有的线程发出命令使用[ALL]选项。
无论gdb何时中断了你的程序(因为一个断点或是一个信号),它自动选择信号或
断点发生的线程为当前线程。gdb将用一个格式为[Switching to SYSTAG]的消息来向你报告。
分享到:
评论

相关推荐

    gdb调试多线程程序总结

    GDB 调试多线程程序总结 GDB 调试多线程程序是一种复杂的调试技术,需要熟练掌握 GDB 的多线程调试命令。下面是 GDB 调试多线程程序的总结。 基本命令 在 GDB 中,使用 `info threads` 命令可以显示当前可调试的...

    Debugging with GDB 用GDB调试多线程程序

    ### 使用GDB调试多线程程序 在Linux环境下,GDB(GNU调试器)是进行程序调试的强大工具,尤其在处理复杂多线程程序时,GDB提供了丰富的功能来帮助开发者定位和解决问题。本文将详细介绍如何利用GDB的特性来有效地...

    GDB调试多线程

    本文将深入探讨如何使用GDB进行多线程调试以及处理多进程调试的挑战。 **1. 多线程调试** 在多线程应用中,错误往往难以定位,因为多个线程可能同时执行,导致问题难以复现。GDB提供了一些功能来协助我们追踪和...

    使用GDB调试多线程实例详解

    先写一段多线程程序。 makefile 加上 -g参数生成可调式信息, 可以进行调试。 pthread不是Linux下的默认的库,也就是在链接的时候,无法找到phread库中哥函数的入口地址,于是链接会失败。在gcc编译的时候,...

    gdb多线程调试

    GDB 多线程调试是指在使用 GDB 调试多线程程序时的一些命令和技巧。多线程调试是指在一个进程中存在多个线程的情况下,对每个线程的调试。GDB 提供了多种命令来支持多线程调试,下面将对这些命令进行详细的介绍。 ...

    多线程gdb调试思路说明

    本文将结合实际经验总结多线程调试的思路,提供给使用GDB调试多线程的同仁们一些有用的信息。 一、GDB多线程调试基本命令 在GDB中,多线程调试的基本命令主要包括以下几个: 1、info threads:显示当前可调试的...

    用GDB调试程序(整理有书签).pdf

    通过阅读这些教程,你可以了解如何有效地使用GDB解决实际问题,比如调试多线程程序、分析核心转储等复杂场景。 总结起来,GDB是Linux开发者的得力助手,熟练掌握GDB的使用不仅可以提高调试效率,还能提升解决问题的...

    GDB调试程序[陈皓]&GDB调试工具指南

    他可能会涵盖如何启动GDB、加载目标程序、设置断点、单步执行、查看和修改变量值、以及如何处理多线程和共享库的问题。此外,陈皓可能还会分享一些高级技巧,如使用GDB的Python扩展进行更复杂的调试任务,或者如何...

    多线程调试方法.pdf

    以下是一些使用GDB调试多线程程序的关键命令: 1. `info threads`:此命令用于显示当前可调试的所有线程及其对应的ID。星号(*)标记当前正在调试的线程。 2. `thread ID`:通过输入线程ID,可以切换当前调试的...

    GDB 多线程调试基本命令

    ### GDB多线程调试基本命令详解 #### 一、引言 随着现代软件系统日益复杂,多线程编程已成为常态。为了确保程序的稳定性和性能,开发人员必须掌握有效的多线程调试技术。GNU Debugger (GDB) 是一款强大的开源调试...

    GDB--gdb调试.pdf

    - **多进程与多线程调试**:GDB支持对包含多个进程或线程的复杂程序进行调试,使用相应的命令可以切换和控制不同进程或线程的状态。 ### 运行程序下的调试技巧 对于已经在运行的进程,GDB提供了特殊的方法进行调试...

    Linux GDB调试文档

    总结来看,一个合格的Linux C/C++后台开发者应该掌握GDB调试技术,利用这一强大的工具来增强开发过程中的问题诊断和解决能力。GDB的版本不断更新,其功能也在不断增强,例如在*.*.*.**版本中,特别强调了对多线程和...

    GDB调试参考手册

    手册还说明了如何调试已经在运行的进程,如何终止子进程,以及如何调试多线程程序和进程的分支(forks)。 手册中还专门有一部分讲解了使用GDB设置断点(breakpoints)、观察点(watchpoints)和捕获点...

    gdb调试常用命令总结

    gdb提供了专门的命令用于调试多线程程序,下面详细介绍这些命令: 1. **查看当前线程** - 使用`info threads`命令查看当前所有线程的信息。每个线程都有一个由gdb分配的ID,用于后续操作。 - 输出示例: ``` ...

    linux学习必备,如何用GDB调试程序

    七、调试多线程程序 GDB支持多线程程序的调试。你可以用`thread`命令查看所有线程,`thread n`切换到第n个线程,`info threads`显示线程信息。 总之,GDB是Linux程序员的强大工具,熟练掌握其使用可以极大地提升你...

    gdb调试工具

    9. **调试多线程程序**:GDB可以同时跟踪多个线程,查看每个线程的状态,这对于处理并发和同步问题特别有用。 10. **核心转储分析**:当程序异常退出时,可以生成核心转储文件,GDB可以分析这些文件以确定崩溃发生...

    gdb调试工具使用手册

    七、调试多线程程序 GDB可以同时管理多个线程,`thread`命令列出所有线程,`thread <num>`切换到指定线程,`info threads`查看线程状态。 总结,GDB是强大的调试工具,通过熟练掌握其各种功能,能极大地提升程序...

Global site tag (gtag.js) - Google Analytics