`
boisterous
  • 浏览: 63526 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类

GDB信号的处理和启动配置文件(转载)

阅读更多
信号的处理
程序是和网络相关的,调试期间经常地收到SIGPIPE,导致gdb停下来。看了一下gdb info,解决方法很简单。用handle命令设置一下缺省signal的处理行为就可以了:
handle SIGPIPE nostop
如果连提示信息都不想看见,就可以这样设置:
handle SIGPIPE nostop noprint
就可以了。其他相关信号也可以类似处理。想了解目前的signal状态可以使用info signal察看。

启动配置文件
GDB使用中比较麻烦的事情,就是每次启动,还要手动敲一把命令,特别是断点比较多的情况,这个特便影响,工作效率。查了一下 gdb info,gdb支持自动读取一个启动脚本文件.gdbinit,所以经常输入的启动命令,就都可以写在gdb启动目录的.gdbinit里面。比如
.gdbinit:
file myapp
handle SIGPIPE nostop
break ss.c:100
break ss.c:200
run
GDB和bash类似,也支持source这个命令,执行另外一个脚本文件。所以可以修改一下.gdbinit:
.gdbinit:
file myapp
handle SIGPIPE nostop
source gdb.break
run
gdb.break:
break ss.c:100
break ss.c:200
这样修改的断点配置,只需要编辑gdb.break就可以了。再后来,偶而还是需要单独启动GDB,不想执行自动脚本,于是又改进了一下。首先把.gdbinit命名为gdb.init,然后定义一个shell alias:
$ alias .gdb=”gdb -x gdb.init”
这样如果需要使用自动脚本,就用.gdb命令,否则用gdb进入交互状态的gdb。这样配置以后可以一个简单命令就开始调试,整个效率就能提高不少。

信号(Signals)
信号是一种软中断,是一种处理异步事件的方法。一般来说,操作系统都支持许多信号。尤其是UNIX,比较重要应用程式一般都会处理信号。UNIX定义了许
多信号,比如SIGINT表示中断字符信号,也就是Ctrl+C的信号,SIGBUS表示硬件故障的信号;SIGCHLD表示子进程状态改动信号;
SIGKILL表示终止程式运行的信号,等等。信号量编程是UNIX下非常重要的一种技术。
GDB有能力在你调试程式的时候处理所有一种信号,你能告诉GDB需要处理哪一种信号。你能需求GDB收到你所指定的信号时,马上停住正在运行的程式,以供你进行调试。你能用GDB的handle命令来完成这一功能。
handle
在GDB中定义一个信号处理。信号能以SIG开头或不以
SIG开头,能用定义一个要处理信号的范围(如:SIGIO-SIGKILL,表示处理从SIGIO信号到SIGKILL的信号,其中包括SIGIO,
SIGIOT,SIGKILL三个信号),也能使用关键字all来标明要处理所有的信号。一旦被调试的程式接收到信号,运行程式马上会被GDB停住,以
供调试。其能是以下几种关键字的一个或多个。
nostop
当被调试的程式收到信号时,GDB不会停住程式的运行,但会打出消息告诉你收到这种信号。
stop
当被调试的程式收到信号时,GDB会停住你的程式。
print
当被调试的程式收到信号时,GDB会显示出一条信息。
noprint
当被调试的程式收到信号时,GDB不会告诉你收到信号的信息。
pass
noignore
当被调试的程式收到信号时,GDB不处理信号。这表示,GDB会把这个信号交给被调试程式会处理。
nopass
ignore
当被调试的程式收到信号时,GDB不会让被调试程式来处理这个信号。
info signals
info handle
查看有哪些信号在被GDB检测中。
分享到:
评论

相关推荐

    gdb.exe文件

    在实际使用中,你可以通过以下步骤配置和使用gdb.exe: 1. **安装MinGW和gdb**:确保MinGW已经正确安装,并将gdb.exe添加到bin目录。 2. **配置环境变量**:将MinGW的bin目录添加到系统PATH环境变量。 3. **编译带...

    一个gdb文件的

    在描述中提到的“几何图形”,可能意味着这个GDB文件是在调试一个与图形处理或计算几何相关的程序。这可能是一个教学示例,用于演示如何使用GDB调试涉及图形绘制或计算的代码。GDB可以通过查看内存中的数据结构,...

    包括gdb64.exe和gdb.exe

    1. **配置文件**:如`gdbinit`,是GDB的启动配置文件,用户可以在这里设置默认的行为,如自定义命令、初始化变量等。 2. **文档**:可能包含GDB的手册页、用户指南、常见问题解答等,帮助用户更好地理解和使用GDB。 ...

    gdb手册 word文件

    GDB允许用户处理和响应程序接收到的信号,如中断(`SIGINT`)或非法指令(`SIGSEGV`),有助于调试信号相关的错误。 总之,GDB是一个功能强大的调试工具,通过它,开发者可以深入程序的运行细节,有效地定位和解决问题...

    使用gdb分析core文件相关方法

    了解不同类型的异常信号及其产生的原因对于正确地使用gdb分析core文件至关重要。以下是几种常见的异常信号: 1. **信号6:Abort错误** - 产生原因:程序调用了`abort()`函数。这可能是因为显式的调用、`assert()`...

    文件夹下多个mdb批量转gdb.zip

    在GIS领域,ArcGIS是一款广泛使用的地理信息系统,它提供了丰富的数据管理和分析功能。本文将详细介绍如何使用ArcGIS的工具箱以及Python脚本来...了解并掌握这些技术,能够使GIS专业人员在数据管理和处理方面更加高效。

    gdb完全手册.pdf.zip_GDB pdf_GDB中文手册_gdb_linux_linux gdb pdf

    10. **异常和信号处理**:说明如何调试程序中的异常和信号,如segfault( segmentation fault)。 11. **调试动态链接库**:介绍如何处理动态加载的库和它们的调试问题。 12. **性能分析**:虽然GDB主要用于调试,...

    gdb+gdbserver安装,配置和调试

    就目前而言,嵌入式Linux系统中,主要有三种远程调试方法,分别适用于不同场合的调试工作:用ROM Monitor调试目标机程序、用KGDB调试系统内核和用gdbserver调试用户空间程序。这三种调试方法的区别主要在于,目标机...

    最新gdb8.1和gdb7.7

    1. **启动GDB**:通过命令行输入`gdb <可执行文件>`来启动GDB并加载目标程序。 2. **设置断点**:使用`break`或`b`命令可以在特定行号、函数名或地址设置断点。 3. **运行程序**:使用`run`或`r`命令来开始执行程序...

    GDB官网用户手册(gdb.pdf)

    GDB 提供了多种方法来启动调试会话,例如通过命令行参数、环境变量或配置文件来指定要调试的程序。用户可以通过在命令行中输入「gdb」命令来启动 GDB,或者通过在 IDE 中配置 GDB 来启动调试会话。 知识点 3: GDB ...

    GDB调试core文件最常用的

    GDB(GNU Debugger)是Linux环境下用于调试C/C++程序的强大工具,尤其在...熟练掌握这些GDB命令,可以帮助开发者更有效地定位和解决程序中的错误,尤其是在处理复杂的崩溃问题时,core dump文件能提供至关重要的线索。

    VS2019C++编译FileGDB_API_1.5.2

    `license`文件包含关于使用FileGDB_API的法律条款和限制,确保在开发和部署应用时遵守这些规定。 总结来说,VS2019 C++编译FileGDB_API 1.5.2涉及到多个步骤,包括环境配置、项目设置、资源管理以及示例的编译和...

    linux_gdb——sgi_stl——文件锁——程序自动重启

    另外,还可以使用systemd服务配置文件来控制程序开机启动。熟悉这些机制可以帮助开发者确保服务的可靠性。 5. **makefile**:Makefile是用于自动化编译过程的文本文件,定义了目标文件、依赖关系和编译规则。通过...

    GDB中文手册 GDB

    GDB提供了多种方式来选择调试文件和模式,并在启动期间执行一系列初始化操作。当调试完毕,可通过`quit`命令安全退出GDB。 - **Shell命令与日志记录**:GDB支持在调试过程中执行Shell命令,方便用户进行环境配置或...

    采用arcgis的arcpy写的一个合并多个gdb工具

    这个“合并多个MDB或GDB工具无代码”的压缩包文件很可能包含了这样的脚本,使用者只需要配置好参数,就可以在ArcGIS环境中直接运行。 总的来说,通过熟练掌握arcpy,我们可以轻松地对GIS数据进行复杂的操作,包括但...

    gdb手册debuging with gdb 中文

    - **GDB启动时的活动**:加载配置文件、初始化环境等。 **2.2 退出GDB** - 使用`quit`命令退出调试会话。 **2.3 Shell命令** - 在GDB内部可以通过`!`执行shell命令。 **2.4 日志输出** - 可以使用`log`命令来...

    gdb.exe文件以及gdbserver.exe文件

    它是GDB的主程序,通过这个文件,开发者可以在本地系统上启动调试会话,对程序进行断点设置、单步执行、查看变量、分析内存等操作。 而"**gdbserver.exe**"是GDB的一个服务器版本,它的作用在于远程调试。当你需要...

    GDAL打开ESRI FileGDB格式数据

    在GIS(地理信息系统)领域,数据的存储和处理是至关重要的。GDAL(Geospatial Data Abstraction Library)是一个开源的库,它提供了对多种地理空间数据格式的支持,包括ESRI的FileGDB(File GeoDatabase)。本篇...

    linux文件系统配置解析与gdb使用

    - **服务程序配置文件**:包括`inetd.conf`、`hosts.allow`、`hosts.deny`等,用于管理网络服务的启动和访问控制。 - **硬件访问文件**:如`/etc/modules.conf`用于内核模块的加载,`/dev`目录下的设备文件用于硬件...

Global site tag (gtag.js) - Google Analytics