GDB使用手册(中文版)

合集下载

GDB使用手册(中文版)

GDB使用手册(中文版)

[转]GDB使用手册(中文版)START-INFO-DIR-ENTRY* Gdb: (gdb). The GNU debugger.END-INFO-DIR-ENTRYThis file documents the GNU debugger GDB.This is Edition 4.12, January 1994, of `Debugging with GDB: the GNUSource-Level Debugger' for GDB Version 4.16.Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995 FreeSoftware Foundation, Inc.Permission is granted to make and distribute verbatim copies of thismanual provided the copyright notice and this permission notice arepreserved on all copies.Permission is granted to copy and distribute modified versions ofthis manual under the conditions for verbatim copying, provided alsothat the entire resulting derived work is distributed under the termsof a permission notice identical to this one.Permission is granted to copy and distribute translations of thismanual into another language, under the above conditions for modifiedversions.使用GDB:本文描述GDB,GNU的原代码调试器。

gdb技术手册(中文版)

gdb技术手册(中文版)

gdb技术手册(中文版)2-12008-11-13 19:20:59| 分类:学习资料| 标签:|字号大中小订阅gdb技术手册(中文版)2 (2008-10-29 20:34:21)标签:杂谈一、查看源程序一、显示源代码GDB可以打印出所调试程序的源代码,当然,在程序编译时一定要加上-g的参数,把源程序信息编译到执行文件中。

不然就看不到源程序了。

当程序停下来以后,GDB会报告程序停在了那个文件的第几行上。

你可以用list命令来打印程序的源代码。

还是来看一看查看源代码的GDB命令吧。

list<linenum>;显示程序第linenum行的周围的源程序。

list<function>;显示函数名为function的函数的源程序。

list显示当前行后面的源程序。

list -显示当前行前面的源程序一般是打印当前行的上5行和下5行,如果显示函数是是上2行下8行,默认是10行,当然,你也可以定制显示的范围,使用下面命令可以设置一次显示源程序的行数。

set listsize <count>;设置一次显示源代码的行数。

show listsize查看当前listsize的设置。

list命令还有下面的用法:list<first>;,<last>;显示从first行到last行之间的源代码。

list ,<last>;显示从当前行到last行之间的源代码。

list +往后显示源代码。

一般来说在list后面可以跟以下这们的参数:<linenum>; 行号。

<+offset>; 当前行号的正偏移量。

<-offset>; 当前行号的负偏移量。

<filename:linenum>; 哪个文件的哪一行。

<function>; 函数名。

<filename:function>;哪个文件中的哪个函数。

GDB用户指南说明书

GDB用户指南说明书

Table of ContentsAbout1 Chapter 1: Getting started with GDB2 Remarks2 Examples2 What is GDB?2 Starting GDB2 Working with a Core File3 Credits5AboutYou can share this PDF with anyone you feel could benefit from it, downloaded the latest version from: gdbIt is an unofficial and free GDB ebook created for educational purposes. All the content is extracted from Stack Overflow Documentation, which is written by many hardworking individuals at Stack Overflow. It is neither affiliated with Stack Overflow nor official GDB.The content is released under Creative Commons BY-SA, and the list of contributors to each chapter are provided in the credits section at the end of this book. Images may be copyright of their respective owners unless otherwise specified. All trademarks and registered trademarks are the property of their respective company owners.Use the content presented in this book at your own risk; it is not guaranteed to be correct nor accurate, please send your feedback and corrections to ********************Chapter 1: Getting started with GDBRemarksGDB (GNU Project debugger) is a command line base debugger that is good at analyzing running and cored programs. According to the user manual GDB supports C, C++, D, Go, Objective-C, Fortran, Java, OpenCL C, Pascal, Rust, assembly, Modula-2, and Ada.GDB has the same feature set as most debuggers but is different from most that I have used in that is all based on typing commands instead of clicking on GUI elements. Some of these features include:•Setting break points•Printing the value of variables.•Setting the value of variables to test things out.•Viewing the stackExamplesWhat is GDB?GDB, short for GNU Debugger, is the most popular debugger for UNIX systems to debug C and C++ programs. GNU Debugger, which is also called gdb, is the most popular debugger for UNIX systems to debug C and C++ programs.GNU Debugger helps you in getting information about the following:•If a core dump happened, then what statement or expression did the program crash on?•If an error occurs while executing a function, what line of theprogram contains the call to that function, and what are theparameters?•What are the values of program variables at a particular point during execution of theprogram?•What is the result of a particular expression in a program?Starting GDBTo start GDB, in the terminal,gdb <executable name>For the above example with a program named main, the command becomesgdb mainSetting BreakpointsYou'll probably want you program to stop at some point so that you can review the condition of your program. The line at which you want the program to temporarily stop is called the breakpoint. break <source code line number>Running your programTo run your program, the command is, as you guessed,runOpening a coregdb -c coreFile pathToExecutableWorking with a Core FileCreated this really bad program#include <stdio.h>#include <ctype.h>// forward declarationsvoid bad_function(){int *test = 5;free(test);}int main(int argc, char *argv[]){bad_function();return 0;}gcc -g ex1.c./a.out //or whatever gcc createsSegmentation fault (core dumped)gdb -c core a.outCore was generated by `./a.out'.Program terminated with signal SIGSEGV, Segmentation fault. #0 __GI___libc_free (mem=0x5) at malloc.c:2929 2929 malloc.c: No such file or directory.(gdb) where#0 __GI___libc_free (mem=0x5) at malloc.c:2929 #1 0x0000000000400549 in bad_function () at ex1.c:12 #2 0x0000000000400564 in main (argc=1, argv=0x7fffb825bd68) at ex1.c:19Since I compiled with -g you can see that calling where tells me that it didn't like the code on line 12 of bad_function()Then I can examine the test variable that I tried to free(gdb) up#1 0x0000000000400549 in bad_function () at ex1.c:12 12 free(test);(gdb) print test$1 = (int *) 0x5(gdb) print *testCannot access memory at address 0x5In this case the bug is pretty obvious I tried to free a pointer that was just assigned the address 5 which wasn't created by malloc so free has no idea what to do with it.Read Getting started with GDB online: https:///gdb/topic/4964/getting-started-with-gdbCredits。

gdb 使用方法

gdb 使用方法

gdb 使用方法一、基本用法1. 启动gdb可以通过在命令行中输入"gdb"命令来启动gdb,并指定要调试的可执行文件作为参数。

例如,要调试名为"program"的可执行文件,可以输入以下命令:```gdb program```2. 设置断点断点是一个程序中的特定位置,当程序执行到该位置时,会暂停执行,从而可以检查程序的状态。

可以使用"gdb"命令设置断点。

例如,要在程序的第10行设置一个断点,可以输入以下命令:```break 10```可以使用"break"命令指定函数名或文件名和行号来设置断点。

3. 运行程序在gdb中运行程序时,可以使用"run"命令。

如果程序需要命令行参数,可以在"run"命令后面添加这些参数。

例如,要运行程序并传递参数"arg1"和"arg2",可以输入以下命令:```run arg1 arg2```4. 执行程序在gdb中执行程序时,可以使用"continue"命令。

该命令会让程序继续执行,直到遇到下一个断点或程序结束。

5. 单步执行在gdb中,可以使用"next"命令逐行执行程序。

该命令会执行当前行,并将程序指针移到下一行。

如果当前行是函数调用,"next"命令会将程序指针移到函数的第一行。

6. 查看变量的值在gdb中,可以使用"print"命令查看变量的值。

例如,要查看变量"var"的值,可以输入以下命令:```print var```7. 修改变量的值在gdb中,可以使用"set"命令修改变量的值。

例如,要将变量"var"的值设置为10,可以输入以下命令:```set var = 10```8. 退出gdb在gdb中退出调试会话时,可以使用"quit"命令。

(2021年整理)GDB调试命令手册.

(2021年整理)GDB调试命令手册.

(完整版)GDB调试命令手册.编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整版)GDB调试命令手册.)的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整版)GDB调试命令手册.的全部内容。

(完整版)GDB调试命令手册.编辑整理:张嬗雒老师尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布到文库,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是我们任然希望 (完整版)GDB调试命令手册。

这篇文档能够给您的工作和学习带来便利。

同时我们也真诚的希望收到您的建议和反馈到下面的留言区,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请下载收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为〈(完整版)GDB调试命令手册。

> 这篇文档的全部内容。

常用的 gdb 命令backtrace 显示程序中的当前位置和表示如何到达当前位置的栈跟踪(同义词:where breakpoint 在程序中设置一个断点cd 改变当前工作目录clear 删除刚才停止处的断点commands 命中断点时,列出将要执行的命令continue 从断点开始继续执行delete 删除一个断点或监测点;也可与其他命令一起使用display 程序停止时显示变量和表达时down 下移栈帧,使得另一个函数成为当前函数frame 选择下一条 continue 命令的帧info 显示与该程序有关的各种信息jump 在源程序中的另一点开始运行kill 异常终止在 gdb 控制下运行的程序list 列出相应于正在执行的程序的原文件内容next 执行下一个源程序行,从而执行其整体中的一个函数print 显示变量或表达式的值pwd 显示当前工作目录pype 显示一个数据结构 (如一个结构或 C++类的内容quit 退出 gdbreverse-search 在源文件中反向搜索正规表达式run 执行该程序search 在源文件中搜索正规表达式set variable 给变量赋值signal 将一个信号发送到正在运行的进程step 执行下一个源程序行,必要时进入下一个函数undisplay display 命令的反命令,不要显示表达式until 结束当前循环up 上移栈帧,使另一函数成为当前函数watch 在程序中设置一个监测点(即数据断点whatis 显示变量或函数类型GDB 命令分类详解一:列文件清单。

gdb 用法

gdb 用法

GDB用法1. 什么是GDB?GDB (GNU Debugger) 是一个功能强大的、用于调试程序的工具。

它可以帮助开发者定位和修复程序中的错误,提高程序的质量和稳定性。

GDB支持多种编程语言,包括C、C++、Fortran、Go等。

2. GDB的安装GDB是开源软件,可以在大多数操作系统上进行安装。

下面是在Linux系统上安装GDB的步骤:1.打开终端。

2.执行以下命令来安装GDB:sudo apt-get install gdb3. GDB的基本用法GDB具有丰富的功能,下面将介绍一些基本的用法:3.1 启动程序要调试一个程序,首先需要启动GDB并告诉它要调试的程序的路径。

执行以下命令来启动GDB:gdb <程序路径>3.2 设置断点断点是在程序执行过程中停下来进行调试的标记点。

在GDB中,你可以设置多个断点来跟踪程序的执行情况。

以下是设置断点的命令:•break <行号>: 在指定的行上设置断点。

•break <函数名>: 在指定函数的开头设置断点。

3.3 运行程序一旦设置了断点,就可以运行程序了。

以下是运行程序的命令:•run: 运行程序。

•continue: 继续执行程序,直到遇到下一个断点或程序结束。

3.4 单步执行程序一旦程序在断点处停下来,你可以逐步执行程序的每一行代码,并查看变量的值、调用栈等。

以下是单步执行程序的命令:•next: 执行下一行代码。

•step: 执行下一行代码,并进入到函数内部。

•finish: 执行完当前函数并返回到函数调用的地方。

3.5 查看变量的值在程序运行过程中,你可以随时查看变量的值。

以下是查看变量的命令:•print <变量名>: 查看变量的值。

•display <变量名>: 每次程序停下来时,都自动显示变量的值。

3.6 修改变量的值在调试过程中,有时候你可能需要修改变量的值来进行测试。

以下是修改变量值的命令:•set <变量名> = <新值>: 修改变量的值。

gdb教程

gdb教程

gdb教程GDB是一个功能强大的调试器,它可以帮助开发人员定位和解决程序中的错误。

本教程将介绍如何使用GDB进行调试。

1. 安装GDB在开始使用GDB之前,首先需要在您的机器上安装它。

您可以通过在终端中运行以下命令来检查是否已安装GDB:```gdb --version```如果显示了GDB的版本信息,则表示已安装。

如果没有安装,可以通过系统包管理器或从GDB官方网站上下载安装包进行安装。

2. 编译程序在使用GDB之前,需要确保程序是以调试模式编译的。

在编译时,可以使用`-g`选项来启用调试信息的生成。

例如:```gcc -g -o myprogram myprogram.c```这样会生成一个名为`myprogram`的可执行文件,其中包含调试信息。

3. 启动GDB运行以下命令以启动GDB并加载程序:```gdb myprogram```这将启动GDB并将`myprogram`加载到调试器中。

4. 设置断点断点是GDB中的一个重要特性,它可以让您在程序执行时暂停并进行调试。

您可以使用`break`命令来设置断点。

例如,要在`main`函数的第10行设置一个断点,运行以下命令:```break main:10```当程序执行到该行时,它将暂停并等待您执行下一步操作。

5. 执行程序您可以使用`run`命令来执行程序。

例如:```run```程序将开始执行,并在遇到断点或程序结束时停止。

6. 调试命令一旦程序暂停,您可以使用各种GDB命令来查看和操作程序状态。

以下是一些常用的命令:- `next`: 执行下一行代码。

- `step`: 进入函数并执行下一行代码。

- `print <variable>`: 打印变量的值。

- `backtrace`: 打印函数调用堆栈。

- `continue`: 继续执行程序直到下一个断点或程序结束。

可以使用`help`命令来获取有关其他命令的更多信息。

7. 查看内存和寄存器GDB还可以让您查看程序的内存和寄存器状态。

gdb使用手册

gdb使用手册

gdb使用手册摘要:一、GDB 简介1.GDB 的定义2.GDB 的作用二、GDB 的安装与配置1.安装GDB2.配置GDB三、GDB 的基本使用1.启动GDB2.调试程序3.控制程序执行4.查看程序状态四、GDB 的高级功能1.断点调试2.单步执行3.查看变量值4.修改变量值5.控制台输出6.退出GDB正文:GDB(GNU Debugger)是一个用于调试程序的强大工具。

它支持C、C++等语言,可以通过命令行或图形界面进行操作。

GDB 可以帮助程序员找到程序中的错误,并能够对程序进行调试、测试和优化。

一、GDB 简介GDB 是一个功能强大的调试器,主要用于调试C、C++等语言编写的程序。

它可以让程序员在程序运行过程中观察程序的内部状态,设置断点,单步执行代码等,以便找到程序中的错误。

二、GDB 的安装与配置1.安装GDB:GDB 通常与编译器一起安装,例如,使用GCC 编译器时,可以通过以下命令安装GDB:`sudo apt-get install gdb`。

2.配置GDB:在使用GDB 之前,可能需要对GDB 进行一些配置,例如设置编译器的路径、添加新的调试符号等。

可以使用`gdb-config`命令进行配置。

三、GDB 的基本使用1.启动GDB:使用`gdb`命令启动GDB,并指定要调试的程序。

例如:`gdb my_program`。

2.调试程序:在GDB 中,可以使用`run`命令开始运行程序。

程序将暂停在第一个断点处,此时可以查看程序的状态,例如变量值、内存地址等。

3.控制程序执行:在GDB 中,可以使用`next`、`step`、`continue`等命令控制程序的执行。

`next`命令会执行当前行的下一行代码,`step`命令会执行当前行的所有代码,`continue`命令会继续执行程序,直到遇到断点或程序结束。

4.查看程序状态:在GDB 中,可以使用`print`、`display`、`backtrace`等命令查看程序的状态。

GDB中文手册

GDB中文手册

GDB中文手册/****************************************************/GDB 用调试程序GDB 2概述GDB 5使用GDB UNIX shell 8中运行的程序GDB 8在中运行程序 9调试已运行的程序两种方法: / 9暂停恢复程序运行BreakPoint 9一、设置断点()WatchPoint 10二、设置观察点()CatchPoint 10三、设置捕捉点() 11四、维护停止点 12五、停止条件维护 12六、为停止点设定运行命令 13七、断点菜单 13八、恢复程序运行和单步调试Signals 14九、信号()Thread Stops 15十、线程() 16查看栈信息 18查看源程序 18一、显示源代码 19二、搜索源代码 19三、指定源文件的路径 20四、源代码的内存 21查看运行时数据 21一、表达式 21二、程序变量 22三、数组 23四、输出格式 23五、查看内存 24六、自动显示 25七、设置显示选项GDB 25中关于显示的选项比较多,这里我只例举大多数常用的选项。

27八、历史记录GDB 28九、环境变量 28十、查看寄存器 29改变程序的执行 29一、修改变量值 29二、跳转执行 30三、产生信号量 30四、强制函数返回 30五、强制调用函数GDB 31在不同语言中使用 32后记 1 第页GDB概述是开源组织发布的一个强大的下的程序调试工具。

或许,各位比较喜欢那种GDB GNU UNIX图形界面方式的,像、等的调试,但如果你是在平台下做软件,你会发现VC BCB IDE UNIX这个调试工具有比、的图形化调试器更强大的功能。

所谓寸有所长,尺有所短GDB VC BCB“”就是这个道理。

一般来说,主要帮忙你完成下面四个方面的功能:GDB1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。

2、可让被调试的程序在你所指定的调置的断点处停住。

gdb使用手册

gdb使用手册

gdb使用手册(原创版)目录1.GDB 简介2.GDB 基本功能3.GDB 使用流程4.GDB 常见命令5.GDB 高级特性6.GDB 未来发展正文1.GDB 简介GDB(GNU Debugger)是一款功能强大的调试工具,主要用于 C/C++程序的调试。

GDB 提供了丰富的调试功能,可以帮助程序员定位问题、分析程序运行状态,从而有效地提高软件质量和开发效率。

2.GDB 基本功能GDB 的基本功能包括:设置断点、单步执行、步进执行、查看变量值、运行时查看内存信息、调试线程等。

通过这些功能,程序员可以深入了解程序运行过程中的各种信息,找出潜在的问题。

3.GDB 使用流程GDB 的使用流程主要包括以下几个步骤:(1)启动 GDB:使用“gdb”命令启动 GDB,然后载入需要调试的程序。

(2)设置断点:在需要设置断点的代码位置使用“break”命令。

(3)运行程序:使用“run”命令开始运行程序。

(4)调试过程:根据需要使用 GDB 提供的命令,如“next”、“step”、“continue”等,控制程序的执行流程。

(5)退出 GDB:调试完成后,使用“quit”命令退出 GDB。

4.GDB 常见命令GDB 提供了众多命令以满足不同调试需求,以下是一些常见的 GDB命令:(1)设置断点:break、break-set-file、break-set-function。

(2)控制程序执行:run、continue、step、next、step-over、step-into、step-out。

(3)查看程序状态:print、display、list、backtrace。

(4)操作内存:malloc、free、print-memory-usage。

(5)调试线程:thread-create、thread-join、thread-switch。

5.GDB 高级特性GDB 还提供了一些高级特性,如:(1)远程调试:通过远程调试,程序员可以在一台机器上调试另一台机器上的程序。

GDB使用说明

GDB使用说明

GDB使用说明GDB使用说明1、简介GDB(GNU调试器)是一个功能强大的开源调试工具,用于调试C、C++、Fortran等编程语言的程序。

本文档将提供详细的GDB使用说明,包括安装、启动、基本命令以及高级功能的介绍。

2、安装a) 在Linux上安装GDB:在终端中运行以下命令安装GDB:```sudo apt-get install gdb```b) 在Windows上安装GDB:从GDB官方网站最新的Windows 安装包,并按照安装向导进行安装。

3、启动GDBa) 在Linux上启动GDB:在终端中运行以下命令启动GDB:```gdb [可执行文件名]```b) 在Windows上启动GDB:在命令提示符中切换到GDB的安装目录,然后执行以下命令启动GDB:```gdb:exe [可执行文件名]```4、基本命令a) 运行程序- `run`:开始执行程序。

- `r`:运行程序的简写形式。

b) 设置断点- `break [行号]`:在指定行号设置断点。

- `b [行号]`:设置断点的简写形式。

- `break [函数名]`:在指定函数设置断点。

- `b [函数名]`:设置断点的简写形式。

c) 单步执行- `next`:执行下一行语句。

- `n`:`next`命令的简写形式。

- `step`:进入函数内部执行。

- `s`:`step`命令的简写形式。

d) 打印变量- `print [变量名]`:打印指定变量的值。

- `p [变量名]`:`print`命令的简写形式。

e) 查看栈信息- `bt`:查看完整的栈回溯信息。

- `backtrace`:`bt`命令的完整形式。

f) 调试多线程程序- `info threads`:查看线程信息。

- `thread [线程号]`:切换到指定线程。

5、高级功能a) 控制程序的执行- `continue`:从当前位置继续执行程序。

- `c`:`continue`命令的简写形式。

GDB中文手册

GDB中文手册

使用GDB一般来说GDB主要调试的是C/C++的程序。

要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文件中。

使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点。

如:> cc -g hello.c -o hello> g++ -g hello.cpp -o hello如果没有-g,你将看不见程序的函数名、变量名,所代替的全是运行时的内存地址。

当你用-g把调试信息加入之后,并成功编译目标代码以后,让我们来看看如何用gdb来调试他。

进入GDB启动GDB的方法有以下几种:1、gdb programprogram也就是你的执行文件,一般在当然目录下。

2、gdb program core用gdb同时调试一个运行程序和core文件,core是程序非法执行后core dump后产生的文件。

3、gdb pid如果你的程序是一个服务程序,那么你可以指定这个服务程序运行时的进程ID。

gdb会自动attach上去,并调试他。

program应该在PATH环境变量中搜索得到。

GDB启动时,可以加上一些GDB的启动开关,详细的开关可以用gdb -help查看。

我在下面只例举一些比较常用的参数:参数说明-symbols [file](-s)读取文件中的符号表-exec [file] (-e)调试一个可执行文件-se [file]上二者的缩写-core [file](-c)读入一个core dump文件-pid number (-p)启动attach模式,除错一个执行中的行程。

number 是目标行程的pid-directory [directory] (-d)将directory加入原始码的搜寻路行-readnow (-r)一次读取完所有的符号表,这会让启动gdb的时间变长,但在执行往后的除错动作会较快速。

下列还有部分选择性的参数,我列出几个目前用的到的:-quiet -silent -q安静模式,启动时gdb将不会显示版权页。

GDB手册中文版

GDB手册中文版

GDB用户手册目录目录 (1)摘要 (2)自由软件 (2)自由软件急需自由文档 (2)GDB的贡献者们 (4)1.一个简单的GDB会话 (8)2.征服GDB的进与出 (13)2.1调用GDB (13)2.1.1 选择文件 (14)2.1.2 选择模式 (16)2.1.3 启动期间,GDB做了什么 (19)2.2 退出GDB (20)2.3 Shell命令 (21)2.4 Loging输出 (21)3.GDB命令 (22)3.1命令语法 (22)3.2命令完成 (23)3.3获得帮助 (25)4.在GDB下运行程序 (29)4.1 适合调试的编译 (29)4.2 启动程序 (30)4.3 程序的参数 (32)4.4 程序的环境 (32)4.5 程序的工作目录 (34)4.6 程序的输入输出 (35)4.7 调试某个已运行的进程 (36)4.8 杀掉子进程 (37)4.9 多线程程序的调试 (37)4.10 多进程程序的调试 (40)5.0停止与继续 (42)摘要象GDB这样的调试程序,目的就是让你可以查看其它程序的内部运行过程,或者是在它崩溃的那一时刻它在做什么。

GDB能做4件事(这些还需附加其他的一些事),帮助你捕获在场的错误:·启动程序,设定任何可以影响它行为的东西。

·在特定的条件下使程序停止。

·当程序停止时,分析发生了什么。

·改变程序里的一些东西,进行一个由于bug所导致的结果的矫正性试验,同时继续了解另外一个bug。

可以使用GDB调试用C和C++编写的程序,更多信息参见支持的语言,及C与C++。

部分支持Modula-2,Modula-2的更多信息参见Modula-2。

在调试使用sets、subranges、file variables或嵌套函数的Pascal程序时,目前不能工作。

GDB不支持entering expressions、printing values或者类似特性的Pascal语法。

gdb 使用手册

gdb 使用手册

gdb 使用手册简述一列文件清单二:执行程序三:显示数据四:断点(breakpoint)五.断点的管理六.变量的检查和赋值七. 单步执行八.函数的调用九.机器语言工具十.信号GDB的使用方法简述一列文件清单List(gdb) list line1,line2二:执行程序要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符(<和> )和外壳通配符(*、?、[、])在内。

如果你使用不带参数的run命令,gdb就再次使用你给予前一条run命令的参数,这是很有用的。

利用set args 命令就可以修改发送给程序的参数,而使用show args 命令就可以查看其缺省参数的列表。

(gdb)set args –b –x(gdb) show argsbacktrace命令为堆栈提供向后跟踪功能。

Backtrace 命令产生一张列表,包含着从最近的过程开始的所以有效过程和调用这些过程的参数。

三:显示数据利用print 命令可以检查各个变量的值。

(gdb) print p (p为变量名)print 是gdb的一个功能很强的命令,利用它可以显示被调试的语言中任何有效的表达式。

表达式除了包含你程序中的变量外,还可以包含以下内容:对程序中函数的调用(gdb) print find_entry(1,0)数据结构和其他复杂对象(gdb) print *table_start$8={e=reference=’\000’,location=0x0,next=0x0}值的历史成分(gdb)print $1 ($1为历史记录变量,在以后可以直接引用$1 的值)人为数组人为数组提供了一种去显示存储器块(数组节或动态分配的存储区)内容的方法。

早期的调试程序没有很好的方法将任意的指针换成一个数组。

就像对待参数一样,让我们查看内存中在变量h后面的10个整数,一个动态数组的语法如下所示:base@length因此,要想显示在h后面的10个元素,可以使用h@10:(gdb)print h@10$13=(-1,345,23,-234,0,0,0,98,345,10)whatis 命令可以显示某个变量的类型(gdb) whatis ptype = int *四:断点(breakpoint)break命令(可以简写为b)可以用来在调试的程序中设置断点,该命令有如下四种形式:break line-number 使程序恰好在执行给定行之前停止。

GDB使用手册

GDB使用手册

GDB使用手册《GDB 使用手册详解》一、引言(一)GDB 的简介(二)GDB 的主要功能(三)使用 GDB 的好处二、安装与配置 GDB (一)GDB 的安装方法(二)配置 GDB 的环境变量(三)启动 GDB三、GDB 的基本命令(一)设置断点(二)查看变量(三)单步调试(四)继续执行(五)查看调用栈(六)修改变量的值四、调试多线程程序(一)查看线程信息(二)切换线程(三)设置线程断点(四)处理线程竞争五、调试内存问题(一)检查内存泄漏(二)查看内存布局(三)分析内存访问错误六、调试核心转储文件(一)生成核心转储文件(二)使用 GDB 分析核心转储文件(三)查找导致崩溃的原因七、GDB 的高级功能(一)条件断点(二)监视点(三)远程调试(四)脚本化调试八、GDB 与其他工具的集成(一)与编译器集成(二)与版本控制系统集成(三)与调试器前端集成九、实际案例分析(一)使用 GDB 调试一个简单的程序(二)调试一个多线程程序(三)调试一个内存泄漏问题(四)调试一个核心转储文件十、GDB 的常见问题与解决方法(一)无法启动 GDB(二)断点不起作用(三)调试信息不完整(四)其他常见问题十一、GDB 的最佳实践(一)合理使用断点(二)注意调试的效率(三)结合其他工具进行调试(四)及时清理调试环境十二、GDB 的未来发展(一)GDB 的发展趋势(二)对开发者的影响十三、附录(一)GDB 的命令参考(二)相关资源链接(三)常见问题解答以上是根据 GDB 使用手册编写的文章大纲,你可以根据实际情况进行具体内容的填充和扩展,确保文章不少于 2500 字。

gdb使用手册

gdb使用手册

gdb使用手册摘要:1.GDB 简介2.GDB 的基本组成3.GDB 的使用方法4.GDB 的高级功能5.总结正文:1.GDB 简介GDB(GNU Debugger)是一款强大的调试工具,主要用于C/C++程序的调试。

GDB 可以帮助程序员查找代码中的错误,理解程序的执行过程,并对程序进行性能分析。

2.GDB 的基本组成GDB 主要由以下几个部分组成:(1)调试器:GDB 的核心部分,用于控制调试过程。

(2)服务器:负责与被调试程序进行通信,收集运行时的信息。

(3)命令:GDB 提供了丰富的命令,用于控制调试过程,如设置断点、单步执行、查看变量值等。

(4)调试脚本:记录调试过程中的操作,可以自动化执行一系列命令。

3.GDB 的使用方法使用GDB 进行调试的基本步骤如下:(1)启动GDB:在终端中输入“gdb”并回车,进入GDB 界面。

(2)载入程序:使用“file”命令载入需要调试的程序。

(3)设置断点:使用“break”命令在指定位置设置断点。

(4)运行程序:使用“run”命令开始执行程序。

(5)单步执行:使用“next”或“step”命令让程序执行到下一个断点或执行当前行的代码。

(6)查看变量值:使用“print”或“display”命令查看变量值。

(7)退出GDB:使用“quit”命令退出GDB。

4.GDB 的高级功能GDB 还提供了许多高级功能,如:(1)监视变量:使用“watch”命令实时查看变量的变化。

(2)执行子程序:使用“exec”命令执行子程序。

(3)控制程序执行:使用“continue”命令让程序继续执行,直到遇到下一个断点;使用“stop”命令让程序立即停止执行。

(4)设置断点条件:使用“break”命令设置条件断点,如:当某个变量的值发生变化时暂停程序。

(5)查看堆栈信息:使用“backtrace”或“bt”命令查看当前堆栈的调用情况。

5.总结GDB 是一款功能强大的调试工具,可以帮助程序员更加高效地查找和修复程序中的问题。

gdb使用指南

gdb使用指南

1.概论我们将学习使用gdb来调试通过一个通过串行线同PC相连的嵌入式系统.Gdb可以调试各种程序,包括C、C++、JA V A、PASCAL、FORAN和一些其它的语言。

包括GNU所支持的所有微处理器的汇编语言。

在gdb的所有可圈可点的特性中,有一点值得注意,就是当运行gdb的平台(宿主机)通过串行端口(或网络连接,或是其他别的方式)连接到目标板时(应用程序在板上运行),gdb 可以调试对应用程序进行调试。

这个特性不光在将GNU工具移植到一个新的操作系统或微处理器时侯很有用,对于那些使用GNU已经支持的芯片的嵌入式系统进行开发的设计人员来讲,也是非常有用的。

当gdb被适当的集成到某个嵌入式系统中的时候,它的远程调试功能允许设计人员一步一步的调试程序代码、设置断点、检验内存,并且同目标交换信息。

Gdb同目标板交换信息的能力相当强,胜过绝大多数的商业调试内核,甚至功能相当于某些低端仿真器。

2. Gdb在嵌入式领域的功能实现当调试一个远端目标设备时,gdb依靠了一个调试stub来完成其功能。

调试stub 即是嵌入式系统中一小段代码,它提供了运行gdb的宿主机和所调试的应用程序间的一个媒介。

Gdb和调试stub通过GDB串行协议进行通信。

GDB串行协议是一种基于消息的ASCII码协议,包含了诸如读写内存、查询寄存器、运行程序等命令。

由于绝大多数嵌入式系统设计人员为了最好的利用他们手中特定的硬件的特征,总是自己编写自己的stub。

所以我们有必要清楚的了解一下gdb的串行通信协议。

在后面我们会详细介绍。

为了设置断点,gdb使用内存读写命令,来无损害地将原指令用一个TRAP命令或其它类似的操作码(在此假定,被调试的应用程序是处在RAM中的,当然,如果stub 有足够好的性能,硬件也不错的话,这个条件也不是必须的)代替,使得执行该命令时,可以使得控制权转移到调试stub手中去。

在此时,调试stub的任务就是将当前场景传送给gdb (通过远程串行通信协议),然后从gdb处接收命令,该命令告诉了stub下一步该做什么。

gdb使用手册

gdb使用手册

gdb使用手册【实用版】目录1.GDB 简介2.GDB 的基本组成3.GDB 的使用方法4.GDB 的常用命令5.GDB 的高级功能6.总结正文1.GDB 简介GDB(GNU Debugger)是一款功能强大的调试器,主要用于调试 C/C++程序。

GDB 具有丰富的功能,可以满足各种调试需求。

在开源软件领域,GDB 被广泛应用于程序开发和维护过程中。

2.GDB 的基本组成GDB 主要由以下几个部分组成:(1)调试器核心:提供基本的调试功能,如设置断点、单步执行等。

(2)调试器前端:与用户交互,接收用户输入的调试命令。

(3)调试器后端:与被调试程序交互,传递调试器核心发出的命令,并反馈执行结果。

(4)调试器驱动:负责与具体编程语言和编译器接口,实现对被调试程序的支持。

3.GDB 的使用方法使用 GDB 进行程序调试的基本步骤如下:(1)编写调试脚本:在 GDB 中设置断点、观察变量等,需要使用 GDB 命令编写调试脚本。

(2)编译程序:使用编译器编译待调试程序,同时需要添加适当的调试选项,如-g(GCC)或-O(Oracle C)。

(3)运行 GDB:在命令行中输入“gdb”命令,启动 GDB。

(4)载入程序:在 GDB 中输入载入命令,如“file”,指定待调试程序的路径。

(5)开始调试:使用 GDB 的各种命令,如设置断点、单步执行、观察变量等,对程序进行调试。

4.GDB 的常用命令GDB 提供了丰富的命令来满足调试需求,以下是一些常用的 GDB 命令:(1)run:开始执行程序。

(2)next:执行下一行代码,进入函数内部。

(3)step:执行当前行代码,进入函数内部。

(4)continue:继续执行程序,直到遇到下一个断点或程序结束。

(5)backtrace:查看当前函数调用栈。

(6)print:观察变量值。

(7)break:设置断点。

(8)set:设置调试选项,如设置变量值、修改代码等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

GDB 4.16, Copyright 1995 Free Software Foundation, Inc... (gdb) (gdb)是提示符,在这提示符下可以输入命令,直到退出。(退出命令是 q/Q) 为了尽量和原文档说明的命令相符,即使在本例子中没用的命令我也将演示。
首先我们可以设置 gdb 的屏幕大小。键入: (gdb)set width 70
* 数据:
检查数据
* 语言:
用不同的语言来使用 GDB
* 符号:
检查符号表
* 更改:
更改执行
* GDB 的文件
文件
* 对象 * 控制 GDB * 执行序列: * Emacs: * GDB 的 bug: * 命令行编辑: * 使用历史记录交互: * 格式化文档: * 安装 GDB :
指定调试对象 控制
执行一序列命令 使 GDB 和 Emacs 一起工作
行编辑
如何格式化和打印 GDB 文档
* 索引:
GDB 简介: **************
调试器(比如象 GDB)能让你观察另一个程序在执行时的内部活动,或程序出错时 发生了什么。
GDB 主要能为你做四件事(包括为了完成这些事而附加的功能),帮助你找出程序 中的错误。
Richard Stallman 是 GDB 的始作俑者,另外还有许多别的 GNU 的成员。许多人
为此作出了贡献。(都是老外不提也罢,但愿他们不要来找我麻烦:-))
这里是 GDB 的一个例子: 原文中是使用一个叫 m4 的程序。但很遗憾我找不到这个程序的原代码,
所以没有办法来按照原文来说明。不过反正是个例子,我就拿一个操作系统的 进程调度原码来说明把,原代码我会附在后面。
Fundamentally, the General Public License is a license which says that you have these freedoms and that you cannot take these freedoms away from anyone else. GDB 的作者:
259
ClearSignal();
注意我们下一句语句就是 ClearSignal();
我们用 s/step 跟踪进入这个函数看看它是干什么的。
(gdb) s
ClearSignal () at os.c:227
227
signal(SIGINT,SIG_IGN);
用 l 命令列出原代码:
(gdb) l
222 }
就是把标准屏幕设为 70 列。 然后让我们来设置断点。设置方法很简单:break 或简单打 b 后面加行号或函数名
比如我们可以在 main 函数上设断点: (gdb)break main
或(gdb)b main 系统提示:Breakpoint 1 at 0x8049552: file os.c, line 455. 然后我们可以运行这个程序,当程序运行到 main 函数时程序就会停止返回到 gdb 的
调试 Pascal 程序时,有一些功能还不能使用。
GDB 还可以用来调试 FORTRAN 程序,尽管现在还不支持表达式的输入,输出变量, 或类 FORTRAN 的词法。 * GDB 是"free software",大家都可以免费拷贝。也可以为 GDB 增加新的功能,不 过可要遵守 GNU 的许可协议幺。反正我认为 GNU 还是比较不错的:-) 就这句话:
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
CPU : NO process running
IO : No process
Waiting CPU!!! 31474 31475 31476 31477 31478 31479
Waiting IO NONE
456
State=WAITING;
最后的一行就是下一句要执行的命令。我们现在在另一个函数上加断点。注意我们
首先这个程序叫 os.c 是一个模拟进程调度的原程序(也许是个老古董了:-))。 先说明一下如何取得包括原代码符号的可执行代码。大家有心的话可以去看一下 gcc 的 man 文件(在 shell 下打 man gcc)。gcc -g <原文件.c> -o <要生成的文件名> -g 的意思是生成带原代码调试符号的可执行文件。 -o 的意思是指定可执行文件名。 (gcc 的命令行参数有一大堆,有兴趣可以自己去看看。) 反正在 linux 下把 os.c 用以上方法编译连接以后就产生了可供 gdb 使用的可执行文件。 我用 gcc -g os.c -o os,产生的可执行文档叫 os. 然后打 gdb os,就可进入 gdb,屏幕提示:
本文描述 GDB,GNU 的原代码调试器。(这是 4.12 版 1994 年一月,GDB 版本 4。16)
* 目录:
* 摘要:
GDB 的摘要
* 实例:
一个使用实例
* 入门:
进入和退出 GDB
* 命令:
GDB 的命令
* 运行:
在 GDB 下运行程序
* 停止:
暂停和继续执行
* 栈:
检查堆栈
* 原文件:
检查原文件
Success forking process# 6 ,pid is 31479
Dispatching Algorithm : FIFO ******************************************************************************* *
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
使用 GDB:
提示符下。运行的命令是 run 或 r(gdb 中有不少 alias,可以看一下 help,在 gdb 下打 help) run 后面可以跟参数,就是为程序指定命令行参数。 比如 r abcd,则程序就会 abcd 以作为参数。(这里要说明的是可以用 set args 来指定参 数)。打入 r 或 run 后,程序就开始运行直到进入 main 的入口停止,显示: Starting program: <路径>/os
Breakpo.
(gdb)
然后我们继续运行程序。
(gdb)c
c 或 continue 命令让我们继续被中断的程序。 显示:
Continuing.
Use Control-C to halt
Breakpoint 2, AlarmMessage () at os.c:259
223
224
225 void ClearSignal() /* Clear other signals */
226 {
227
signal(SIGINT,SIG_IGN);
228
signal(SIGALRM,SIG_IGN);
229
signal(SIGUSR2,SIG_IGN);
可以用 l/list 命令来显示原代码。这里我们键入
(gdb)l
451 main()
452 {
453
int message;
454
455
Initial();
456
State=WAITING;
457 458 459 460 (gdb) l 461 462 463 464 465 466 467
printf("Use Control-C to halt \n"); signal(SIGALRM,AlarmMessage); signal(SIGINT,InteruptMessage); signal(SIGUSR2,IoMessage);
Success forking process# 2 ,pid is 31475
Success forking process# 3 ,pid is 31476
Success forking process# 4 ,pid is 31477
Success forking process# 5 ,pid is 31478
alarm(TimeSlot); for(;;)
{ message=GetMessage();
switch(message) { case INTERRUPT :
468
469
case CHILD_IO:
470
显示了原代码,现在在 AlarmMessage 上加断点。
(gdb) b AlarmMessage
* 运行你的程序,设置所有的能影响程序运行的东西。
* 保证你的程序在指定的条件下停止。
* 当你程序停止时,让你检查发生了什么。
* 改变你的程序。那样你可以试着修正某个 bug 引起的问题,然后继续查找另一 个 bug.
你可以用 GDB 来调试 C 和 C++写的程序。(参考 *C 和 C++)
部分支持 Modula-2 和 chill,但现在还没有这方面的文档。
Permission is granted to copy and distribute modified versions of this manual under the co nditions for verbatim copying, provided also that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
相关文档
最新文档