gdb相关内容

获取GDB中所有线程的回溯

我想将一个转储文件中的所有线程与它们的“ GDB中的回溯。 “信息线程”不输出堆栈跟踪。那么,是否有任何命令? 解决方案 通常,回溯用于给出当前线程的堆栈,但如果有必须给所有线程的堆栈跟踪使用以下命令 线程应用所有bt ..
发布时间:2017-04-17 22:34:34 开发方法

在Linux中启动GDB时如何传递命令行参数?

我必须调试一个有错误的程序作为我的任务的一部分。但是,我必须先通过命令行参数来解决这个问题。 我做: gdb -tui InsertionSortWithErrors 哪些工作,但之后我不知道如何传递论据。我使用 gdb -help ,它说出了一些关于 - args ,我也尝试过,它没有工作。 我想要获得调试器+ gui并传递命令行参数。 解 ..
发布时间:2017-04-17 22:34:22 服务器开发

调试C ++代码与模板和STL与gdb

您是否使用任何技巧让调试更简单?也许一些Python脚本?或者您是否满意目前在gdb(ver 6.x,尚未尝试7.x)的方式? 谢谢。 解决方案 我假设你的意思是更好地可视化STL代码(而不是调试模式,它提供安全的迭代器和额外的运行时检查)。我不知道你是否看过这些帖子: GNU GCC文档:调试支持 使用gdb 从版本7.0开始,GDB包括支持在Python中编写漂 ..
发布时间:2017-04-17 22:33:58 C/C++开发

硬件和软件断点有什么区别?

硬件和软件断点之间有什么区别? 硬件断点是否比软件断点更快,如果是,那么为什么会这样我们需要软件断点? 解决方案 本文提供了一个很好的讨论利弊: http://www.nynaeve.net/?p=80 为了直接回答您的问题,软件断点更灵活,因为硬件断点在某些功能方面有限,而且依赖于架构高度。文章中给出的一个例子是x86硬件限制了4个硬件断点。 硬件断点更快,因为它们具 ..
发布时间:2017-04-17 22:32:47 开发方法

gdb:找不到新线程:泛型错误

注意:当我运行GDB时,加载一个链接到pthread的.so的程序,GDB报告错误“找不到新线程:通用错误”。我运行的可执行文件不与pthreads相关联。 任何线索? $ gdb --args lua -lluarocks.require GNU gdb(GDB)7.0-ubuntu 版权所有(C)2009免费软件基金会, 许可证GPLv3 +:GNU GPL版本3或以后 ..
发布时间:2017-04-17 22:18:46 开发方法

内存转储格式如gdb中的xxd

我正在尝试检查一个包含二进制格式的消息的缓冲区,但也包含字符串数据。例如,我使用这个C代码: int main(void){ char buf [100 ] =“\x01\x02\x03\x04String Data\xAA\xBB\xCC”; return 0; } 我想获得一个十六进制转储,里面是$ code> buf ,格式类似于 xxd (我不在乎它是 ..
发布时间:2017-04-17 22:17:03 Python

在gdb中打破特定操作码的指令

我有一些代码的汇编代码将在程序的一个点执行。 我不知道内存中代码的地址。 当指令与输入的指令匹配时,是否可以使gdb中断? / p> 例如,我希望gdb在gdb达到此指令时中断: leaq 0x000008eb(%rip),%rax 解决方案 否这是不可能的,执行效率也是非常低的。 调试器通常支持两种断点: 硬件断点:调试器要求CP ..
发布时间:2017-04-17 22:11:14 开发方法

低级qemu调试

我必须在ARM架构上测试一些低级代码。通常实验在实际上是相当复杂的,所以我正在考虑QEMU。 我想要得到的是某种调试信息,如printfs或gdb。我知道这很简单,因为它实现了QEMU Integrator和gdb功能的设备驱动程序,但是我不使用Linux。另外我怀疑从Linux内核源代码中提取这种功能会很复杂。 我正在搜索一些简单的操作系统已经实现了这些功能之一。你有什么建议吗? ..
发布时间:2017-04-17 21:50:04 开发方法

gdb搜索源目录

如何在unix中提及gdb,如何递归地搜索单个目录中的源文件 ,例如 ,如果一个模块中有一些不同的块。 a是b,c,d的父目录,其中b,c,d是子目录。 和源文件分布在b,c,b中。 我只需要提到gdb,所有源文件都位于(父目录)中。 ,gdb将用作参考,并在调试程序时递归搜索源文件。 解决方案 或者你可以执行这样的操作,调试程序 prog 与目录中的源代码 srcdir : ..
发布时间:2017-04-17 21:22:00 开发方法

行数分割故障

我知道我可以: 逐行调试 将printfs放在代码中缩小。 编辑: bt / 其中在gdb上给没有堆栈。 有用的建议 解决方案 我不知道gcc选项,但您应该能够使用gdb运行应用程序,然后在崩溃时键入其中,以便在退出时查看该堆栈,这应该让您关闭。 $ gdb blah (gdb)运行 (gdb)其中 编辑完整性: 您还应确保构建应用 ..
发布时间:2017-04-17 21:12:37 开发方法

如何在Eclipse中使用GDB进行C / C ++调试?

我是一个Visual Studio用户,用于断点进行调试。我现在正在linux环境中工作,并将Eclipse用作IDE。我是linux和eclipse的新手。我不知道如何在eclipse中使用gdb。我尝试在命令行中使用gdb,但不像使用UI那么简单。 如何在eclipse中使用gdb? 解决方案 以下说明适用于Eclipse 3.5(Galileo)。对于3.6(Helios),除 ..
发布时间:2017-04-17 20:36:26 Java开发

在调试会话中导致Sigtrap的原因

在我的c ++程序中,我正在使用一个将“发送”的库一个Sigtrap对某些操作当 我调试它(​​使用gdb作为调试器)。然后我可以选择是否要继续或停止程序。如果我选择继续程序按预期工作,但在Sigtrap被捕获后设置自定义断点会导致调试器/程序崩溃。 所以这里是我的问题: 什么原因导致这样的Sigtrap?是否可以删除代码的一行,或者是当他“找到不喜欢的东西”时由调试器引起? 一般 ..
发布时间:2017-04-17 20:29:24 C/C++开发

观看gdb中的内存范围?

我在gdb中调试程序,当访问内存区域0x08049000到0x0804a000时,我想让程序停止。当我尝试手动设置内存断点时,gdb一次似乎不支持两个以上的位置。 (gdb) awatch * 0x08049000 硬件访问(读/写)观察点1:* 0x08049000 (gdb)awatch * 0x08049001 硬件访问(读/写)观察点2:* 0x08049001 gdb)a ..
发布时间:2017-04-17 20:16:09 服务器开发

如何使用gdb跟踪C ++中的双重自由或损坏错误

*检测到glibc * ./加载:双重免费或损坏(!prev): 0x0000000000c6ed50 *** 我正在尝试跟踪它使用cout声明,但我发现很难。 gdb可以使这更容易吗?如何完成? 解决方案 如果您使用glibc,可以设置 MALLOC_CHECK _ 环境变量为 2 ,这将导致glibc使用容错版本的 malloc 将导致您的程序在双重空闲完成的时候中止。 ..
发布时间:2017-04-17 20:10:10 C/C++开发

iPhone设备调试

在设备上运行iPhone应用程序而不是模拟器,是否可以实际使用Xcode调试器?即,我可以让设备在我的代码中设置的断点停止,并在设备上运行代码时执行代码? 编辑:我应该提到我是Apple的注册开发人员,并拥有有效的证书。事实上,我可以在我的设备上构建和运行iPhone应用程序。但是,即使在调试模式下,我的应用程序在我的设备上运行时也不会停止断点或输出到控制台。如果有帮助,我的应用程序将在调试 ..
发布时间:2017-04-17 19:48:05 移动开发

双向(或反向)调试

有没有人实际使用可逆调试器? Google发布的唯一产品是 UndoDB 。这显然只适用于Linux。 解决方案 最新的gdb版本7.0(本周发布)支持在许多平台上进行反向调试(例如,native i386和x86_64 linux,VMware工作站,UndoDB和来自Virtutech的Simics模拟器)。 ftp://ftp.gnu.org/pub/gdb 它适用于VMwar ..
发布时间:2017-04-17 19:41:12 开发方法

gdb“目录”的LLDB相当于指定源搜索路径的命令?

寻找gdb“目录”命令的lldb相当于添加搜索路径以找到缺少的源代码(或可能在xcode中类似的功能)? 提前感谢 解决方案 target.source-map 设置允许您定义一系列 a => b 调试会话中的路径重新映射。它与gdb dir 命令不同,后者是基地名搜索源文件的目录列表,但您可以解决与 source-map 。以下是一个示例,我将编译后的源文件移动到隐藏目录: ..
发布时间:2017-04-17 19:20:58 开发方法