博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Debugging with GDB阅读[1]
阅读量:6170 次
发布时间:2019-06-21

本文共 1447 字,大约阅读时间需要 4 分钟。

Debugging with GDB已经有一份中文翻译,在这边中文翻译的基础上将文档中新增的部分以及没有翻译的后继部分进行翻译,对gdb达到一个质的应用。

这是第10部分的选出来的一些技巧

10.4 模糊表达式

表达式有时会包含一些模糊的元素。例如,一些编程语言(特别是Ada,C++和Objective-C语言)允许一个简单的函数名在不同的语境中被定义多次。
这就是所谓的重载。涉及Ada的另一个例子是通用的。一个普通包类似C++模板以及可以被实例化多次,导致在相同的函数名在不同的上下文中被定义。
在某些情况下,根据语言,它是可能删除一些模糊的地方来调整表达。比如在C++中,你可以指定想要下断点的函数特征,比如在function(types)处下断点。
在Ada,使用完整的函数名通常使得表达式不会模糊。
当检测到模糊的地方需要加以解决,调试器有能力来显示每一个可能的选项,然后等待提示符'>'的选择。第一个选项始终是'[0] cancel',并键入
0<RET>来中止当前命令。如果在其中表达的命令允许选择一个以上的选项,在旁边的菜单选项是'[1] all',并键入1 <RET>,选择所有可能的选择。
例如,下面例子显示试图重载的String::after后设置一个断点。我们选择了三个特别的函数名定义:

(gdb) b String::after [0] cancel [1] all [2] file:String.cc; line number:867 [3] file:String.cc; line number:860 [4] file:String.cc; line number:875 [5] file:String.cc; line number:853 [6] file:String.cc; line number:846 [7] file:String.cc; line number:735 > 2 4 6 Breakpoint 1 at 0xb26c: file String.cc, line 867. Breakpoint 2 at 0xb344: file String.cc, line 875. Breakpoint 3 at 0xafcc: file String.cc, line 846. Multiple breakpoints were set. Use the "delete" command to delete unwanted breakpoints. (gdb)

set multiple-symbols mode

此选项允许当出现一个模糊表达式的时候调整调试器的行为。
默认情况下,mode设置为all。如果表达式中使用该命令来允许多个选择,然后GDB自动选择所有可能的选择。例如,插入一个使用模糊的名称的函数断点,
会在每一个可能的匹配函数中插入一个断点。但是,如果必须作出一个唯一的选择,那么GDB使用菜单来帮助你消除有歧义的表达式。例如,在使用的菜单中打印重载函数的地址
当模式设置为ask,调试器发现模糊表达式的时候总是会使用菜单
最后,当模式设置为cancel,调试器会报告模糊表达式的错误并且中止命令。
show multiple-symbols
显示多符号设置的当前值。

转载于:https://www.cnblogs.com/moonflow/archive/2011/12/12/2285144.html

你可能感兴趣的文章
默认路由
查看>>
CYQ.Data 轻量数据层之路 框架开源系列 索引
查看>>
zabbix(2)使用自带模板完成基本监控
查看>>
安装rrdtool出现的错误
查看>>
木马隐藏地点全搜查
查看>>
Subversion版本控制
查看>>
奇怪的打印纸盘故障
查看>>
hyperledger v1.0.5 区块链运维入门(一)
查看>>
Mybatis-mapper-xml-基础
查看>>
5. GC 调优(基础篇) - GC参考手册
查看>>
Windows 7 XP 模式颜色质量只有16位的解决
查看>>
SonicWall如何安全模式升级防火墙
查看>>
Linux IPC实践(3) --具名FIFO
查看>>
从Atlas到Microsoft ASP.NET AJAX(6) - Networking, Application Services
查看>>
成长之路---写好一个类
查看>>
读取 java.nio.ByteBuffer 中的字符串(String) 写入方式flash.utils.ByteArray.writeUTF
查看>>
范围管理和范围蔓延
查看>>
android90 bind方式启动服务service调用service里的方法
查看>>
前端开发薪资之各地区对比(图文分析)(share)
查看>>
对做“互联网产品”的一些想法
查看>>