• GDB调试正在运行程序 2017-09-28 09:33:49
     有时会遇到一种很特殊的调试需求,对当前正在运行的其它进程进行调试(正是我今天遇到的情形)。这种情况有可能发生在那些无法直接在调试器中运行的进程身上,例如有的进程 只能在系统启动时运行。另外如果需要对...

            原文链接:http://blog.csdn.net/sjin_1314/article/details/11

          有时会遇到一种很特殊的调试需求,对当前正在运行的其它进程进行调试(正是我今天遇到的情形)。这种情况有可能发生在那些无法直接在调试器中运行的进程身上,例如有的进程 只能在系统启动时运行。另外如果需要对进程产生的子进程进行调试的话,也只能采用这种方式。GDB可以对正在执行的程序进行调度,它允许开发人员中断程序 并查看其状态,之后还能让这个程序正常地继续执行。

    一、多线程调试

    多线程调试可能是问得最多的。其实,重要就是下面几个命令:

    • info thread 查看当前进程的线程。

    • thread <ID> 切换调试的线程为指定ID的线程。

    • break file.c:100 thread all  在file.c文件第100行处为所有经过这里的线程设置断点。

    • set scheduler-locking off|on|step,这个是问得最多的。在使用step或者continue命令调试当前被调试线程的时候,其他线程也是同时执行的,怎么只让被调试程序执行呢?通过这个命令就可以实现这个需求。

      • off 不锁定任何线程,也就是所有线程都执行,这是默认值。

      • on 只有当前被调试程序会执行。

      • step 在单步的时候,除了next过一个函数的情况(熟悉情况的人可能知道,这其实是一个设置断点然后continue的行为)以外,只有当前线程会执行。

     

    二、调试宏

    这个问题超多。在GDB下,我们无法print宏定义,因为宏是预编译的。但是我们还是有办法来调试宏,这个需要GCC的配合。

    在GCC编译程序的时候,加上-ggdb3参数,这样,你就可以调试宏了。

    另外,你可以使用下述的GDB的宏调试命令 来查看相关的宏。

    • info macro – 你可以查看这个宏在哪些文件里被引用了,以及宏定义是什么样的。

    • macro – 你可以查看宏展开的样子。

    1、首先获得程序的PID

    ps -ef | grep xxxxx 

     2、进入调试程序

    1. gdb attach PID  

    3、gcore命令生成CORE文件

    4、进程信息可以用info  proc显示

    5、 寄存器信息可以用info reg显示





    展开全文
  • 2、gdb 调试正在运行程序,命令如下: gdb attach 39051 3、查看当前正在运行的线程,命令如下: info threads 可以看到,当前有6个线程正在运行 4、查看每个线程的基本信息,这样我才知道,我的读目录是...
  • linux基础 和 gdb的使用 调试文件和正在运行程序 今天看到的一个网站,转载过来,系统性很强。 Linux Tools Quick Tutorial
  • linux下编译、运行调试java程序
  • 有时会遇到一种很特殊的调试需求,对当前正在运行的其它进程进行调试(正是我今天遇到的情形)。这种情况有可能发生在那些无法直接在调试器中运行的进程身上,例如有的进程 只能在系统启动时运行。另外如果需要对...
  • gdb调试当前运行程序 2016-06-02 23:31:22
    为什么使用gdb调试正在运行程序?  因为有时候bug很难复现、或者环境搭建起来比较困难,所以在出现bug的时候可以使用gdb的attach功能调试正在运行的GCC编译出来的程序,注意编译选项要加-g,否则没有符号表。 ...
  • gdb调试正在运行的进程 2010-02-06 10:02:00
    有时会遇到一种很特殊的调试需求,对当前正在运行的其它进程进行调试(正是我今天遇到的情形)。这种情况有可能发生在那些无法直接在调试器中运行的进程身上,例如有的进程 只能在系统启动时运行。另外如果需要对...
  • 调试工具能让我们能够监测、控制和纠正正在运行程序。我们在运行一些程序的时候,可能被卡住或出现错误,或者运行过程或结果,没能如我们预期,此时,最迫切需要明白究竟发生了什么。为了修复程
  • GDB 是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做...启动你的程序,可以按照你的自定义的要求随心所欲的运行程序
  • Linux下C语言程序调试 2018-10-04 16:23:27
    Linux调试C语言程序1.编译时添加调试信息2.使用调试命令进行调试gdb调试器语法gdb模式下的命令[^1]**readelf命令**ELF文件类型ELF文件作用ELF文件总体组成选项 1.编译时添加调试信息 使用gcc -g -o [生成...
  • 程序卡了、慢了、挂了、都得调试!!!环境:CentOS release 6.4 (Final) (使用cat /etc/issue进行查看)python: 2.7.12 (使用 python --version 查看)准备对于Ubuntu:sudo apt-get install gdb python2.7-...
  • 这里的gdb调试是在pc机上对在开发板上运行程序进行调试。具体来说的话,在pc机上要运行gdb,在开发板上运行dbserver。gdb调试的时候,pc机上的gdb向开发板上的gdbserver发出命令,而开发板上的gdbserver就会...
  • Linux:使用GDB调试C程序 2018-04-06 09:29:58
    调试指令 指令: 1.... 2.生成可调试文件:gcc -o xxx -g xxx.c ... run 直接运行程序到结束或者断点处 5.设置断点:break line(行数)或函数名或者条件表达式 break 6 在第6行设置断点 b...
  • 实验1《Linux环境下vi编辑代码》 实验学时: 2 实验地点: 6501 实验日期: 2019.3.13 一、实验目的 (1)能使用常用的linux命令,熟悉linux...(4)学会利用vi编辑器来编辑、gcc编译、gdb调试C程序。 二、实验内容 ...
  • linux系统下调试python程序 2018-05-17 22:18:00
    在没有IDE进行开发的情况下,可以使用pdb命令进行程序调试。对test.py程序进行调试:python -m pdb test.py(Pdb) 会自动停在第一行,等待调试,这时你可以看看 帮助(Pdb) h说明下这几个关键 命令&gt;断点设置(Pdb...
  • 用了好久的gdb 但对于多线程的调试自己还时存在一些问题,因此这次花点时间整理整理。 所有的gdb调试文章 gdb是有一组命令辅助多线程调试的。 info threads 显示可调试的所有线程,gdb 会给每个线程分配一个ID...
  • Linux程序调试——调试工具 1.GDB GDB是一个强大的命令行调试工具。 2.ValGrind Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。 3.addr2line Addr2line 工具(它是标准的 GNU Binutils ...
1 2 3 4 5 ... 20
收藏数 200,273
精华内容 80,109