简述

启动GDB调试

gdb

退出GDB调试

quit
#或者
exit
#或者
Ctrl-d

注:部分centos版本可能不支持exit

启动GDB:如何启动GDB

 通过运行程序 gdb 调用 GDB。一旦启动,GDB 会从终端读取命令,直到您告诉它退出。
您还可以使用各种参数和选项运行 gdb,以在一开始就指定更多的调试环境。
此处描述的命令行选项旨在涵盖各种情况;在某些环境中,其中一些选项可能实际上不可用。
启动 GDB 最常用的方法是使用一个参数,指定一个可执行程序:

gdb program

当程序崩溃时,会产生core文件,所以还可以从指定的可执行程序和核心文件开始:

gdb program core

如:

gdb inphase.GBServer.out core.89101

相反,如果要调试正在运行的进程,您可以指定进程 ID 作为第二个参数或使用选项 -p:

gdb program 1234
#or
gdb -p 1234


会将 GDB 附加到进程 1234。使用选项 -p 您可以省略程序文件名。
利用第二个命令行参数需要一个相当完整的操作系统;当您将 GDB 用作连接到裸板的远程调试器时,可能没有任何“进程”的概念,并且通常无法获得核心转储。如果 GDB 无法附加或读取核心转储,它会警告您。
您可以选择让 gdb 使用 --args 将可执行文件之后的任何参数传递给下级。此选项停止选项处理。

gdb --args program  -O2 -c foo.c


这将导致 gdb 调试 program ,并将 program 的命令行参数(参见参数)设置为“-O2 -c foo.c”。
您可以通过指定 --silent(或 -q/–quiet)来运行 gdb,使他不打印前缀资料:

gdb --silent

看看区别:

您可以使用命令行选项进一步控制 GDB 的启动方式。 GDB 本身可以提醒您可用的选项。
类型

gdb -help


显示所有可用选项并简要描述它们的使用(可以简写为‘gdb -h’)。
您提供的所有选项和命令行参数都按顺序处理。使用“-x”选项时,顺序会有所不同。

退出GDB:如何退出GDB

quit [expression]
#or
exit [expression]
#or
q

要退出GDB,请使用quit命令(缩写为 q)、exit命令或键入文件结尾字符(通常为Ctrl-d)。如果不提供表达式, GDB将正常终止;否则它将使用表达式的结果作为错误代码终止。

中断(通常Ctrl-c)不会从​​ GDB退出,而是终止任何正在进行的GDB命令的操作并返回到GDB命令级别。任何时候键入中断字符都是安全的,因为GDB不允许它在安全的时候生效。

如果您一直在使用GDB来控制附加的进程或设备,则可以使用detach命令释放它(请参阅调试已运行的进程)。

shell命令行:如何在GDB中使用 shell 命令

如果您需要在调试会话期间执行偶尔的 shell 命令,则无需离开或暂停 GDB;你可以只使用shell命令。

shell command-string
#or
!command-string

调用标准 shell 来执行命令字符串。注意 ! 之间不需要空格。和命令字符串。在 GNU 和 Unix 系统上,环境变量 SHELL(如果存在)决定运行哪个 shell。否则 GDB 使用默认 shell(GNU 和 Unix 系统上的 /bin/sh,MS-Windows 上的 cmd.exe,MS-DOS 上的 COMMAND.COM 等)。

开发环境中经常需要使用make。您不必在 GDB 中为此目的使用 shell 命令:

make make-args

使用指定的参数执行 make 程序。这相当于“shell make make-args”。

pipe [command] | shell_command
| [command] | shell_command
pipe -d delim command delim shell_command
| -d delim command delim shell_command

执行命令并将其输出发送到 shell_command。请注意,| 周围不需要空格。如果没有提供命令,则重复执行的最后一个命令。
如果命令包含 |,选项 -d delim 可用于指定将命令与 shell_command 分开的备用分隔符字符串 delim。
例子:

(gdb) p var
$1 = {black = 144,red = 233,green = 377,blue = 610,white = 987
}
(gdb) pipe p var|wc7      19      80
(gdb) |p var|wc -l
7
(gdb) p /x var
$4 = {black = 0x90,red = 0xe9,green = 0x179,blue = 0x262,white = 0x3db
}
(gdb) ||grep redred => 0xe9,
(gdb) | -d ! echo this contains a | char\n ! sed -e 's/|/PIPE/'
this contains a PIPE char
(gdb) | -d xxx echo this contains a | char!\n xxx sed -e 's/|/PIPE/'
this contains a PIPE char!
(gdb)

日志输出

将GDB命令的输出保存到文件中。有几个命令可以控制GDB的日志记录。

set logging enabled [on|off]

启用或禁用日志记录。

set logging file file

更改当前日志文件的名称。默认日志文件是gdb.txt.

set logging overwrite [on|off]

默认情况下,GDB将追加到日志文件。overwrite如果要set logging enabled on改写日志文件, 请设置。

set logging redirect [on|off]

默认情况下,GDB输出将同时发送到终端和日志文件。redirect如果您希望输出仅发送到日志文件,请 设置。

set logging debugredirect [on|off]

默认情况下,GDB调试输出将同时发送到终端和日志文件。debugredirect如果您希望调试输出仅转到日志文件,请 设置。

show logging

显示日志记录设置的当前值。
您还可以将GDB命令的输出重定向到 shell 命令。

GDB使用手册(三)、如何启动及退出GDB调试(被调试程序的GDB启动及退出)相关推荐

  1. php gdb strace抓包,Linux上进程追踪与调试(strace和gdb)

    引言: 我们某些服务出现故障的时候,我们都是根据屏幕的输出以及打印的日志来查找出出现了什么样的错误,但是有时候我们的很多守护进程启动正常却访问不到,比如我们使用Nginx服务,登陆web的时候,却迟迟 ...

  2. 通过gdb调试分析Linux内核的启动过程

    作者:吴乐 山东师范大学 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.实验流程 1.打开环境 执 ...

  3. 设置计算机的启动顺序CDROM.C.A,bios如何设置光驱启动顺序?三种BIOS设置光驱第一启动的方法详细图解...

    在启动计算机时立即按 Delete (Del)[删除键]进入 BIOS[基本输入输出系统]设置 2 选择 Advanced BIOS Features [高级 BIOS 特性设置],并将 First ...

  4. GDB使用手册(四)、GDB命令

     我们可以将 GDB 命令缩写为命令名称的前几个字母,如果该缩写是明确的: 并且可以通过键入 RET 来重复某些 GDB 命令. 还可以使用 TAB 键让 GDB 填写命令中的其余单词(或显示可用的替 ...

  5. 设置计算机的启动顺序CDROM.C.A,bios如何设置光驱启动顺序 三种BIOS设置光驱第一启动的方法详细图解...

    在启动计算机时立即按 Delete (Del)[删除键]进入 BIOS[基本输入输出系统]设置 2 选择 Advanced BIOS Features [高级 BIOS 特性设置],并将 First ...

  6. GDB使用手册(五)、在GDB下运行程序

     在GDB下运行程序时,必须先在编译时生成调试信息.  可以在选择的环境中带参数(如果有)启动GDB .如果我们在做本地调试,我们可以重定向程序的输入和输出,调试一个已经运行的进程,或者杀死一个子进程 ...

  7. (4.6.17.4)进程保活(三:JNI层初探):单进程单向循环式启动服务

    前言 我们先来看看Android4.4的源码,ActivityManagerService(源码/frameworks/base/services/core/Java/com/Android/serv ...

  8. Linux下gdb(插件pwndbg、pead、gef)安装及调试常用指令

    gdb 一.安装指令 如果没安装gdb,先使用以下指令安装gdb sudo apt-get install gdb 先装,因为这个带有 parseheap.以及 heapinfo 等指令,有的场景下更 ...

  9. tomcat mysql 启动顺序_linux 上配置tomcat、mysql 开机启动

    1.tomcat 开机启动 方法一.修改系统文件 (已经尝试,可以) 1.修改/etc/rc.d/rc.local vi /etc/rc.d/rc.local 2.添加下面两行脚本,记住是两行,仅仅第 ...

最新文章

  1. 深入Android 【六】 —— 界面构造
  2. vb检测电脑温度_电脑硬件温度多少正常?如何查看电脑硬件温度?
  3. Java中如何利用gson解析数据
  4. pandas使用笔记(二)列操作
  5. 查看daemon使用技巧
  6. scrapy爬虫+echarts数据分析(安居客)
  7. Flocker 做为后端存储代理 docker volume-driver 支持
  8. LVS部分调度算法的适应场景分析
  9. 5.2探究执行器(Executors)
  10. 西班牙夺得欧洲杯给IT业的十条启示
  11. JavaScript计时器制作进度条
  12. 面向对象(static关键字)
  13. ribbon服务列表和nacos服务列表不一致的问题
  14. 【SpringMVC】SpringMVC模型数据+视图解析器
  15. leetcode 621 Task Scheduler
  16. 又因明星婚恋,微博瘫痪了
  17. WebFlux上传下载Excel文件
  18. 夯实Java基础系列14:深入理解Java枚举类
  19. linux显示全部字符集,linux 字符集 页面显示乱码
  20. 浅析基于SQL Server PDW大数据解决方案

热门文章

  1. 计算机专业教学大纲,计算机专业教学大纲
  2. 解决survIDINRI包比较两个cox模型的IDI/NRI值Error in Surv(xi, di)Time variable is not numeric错误
  3. Adroid学习笔记-入门资料以及V2.3系统开发环境搭建
  4. 27岁只会“功能测试“(点点点),面临公司的“淘汰”?沉淀一年我能继续做测试!
  5. 元宇宙-AR光学设计
  6. [PHP]如何使用Face++接口开发微信公共平台的人脸识别系统
  7. 【单元复习】之标日初级上册第五、六单元
  8. 字符集和字符编码的类别与区分详解
  9. 【Linux kernel/cpufreq】framework ----big Little driver
  10. 【MATLAB】matlab小记1