问题标签 [gdb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如何调试 .pc 文件?
我正在使用 emacs + gdb 在 unix 中调试一堆 .c 文件——而且它总是运行良好。但我从事的一些项目也有一堆 .pc (Pro*C/C++) 文件。这些文件在编译后会生成 .c 和 .i 相关文件。但是在运行时,我只能看到 gdb 中的 .i 文件——这些文件对调试没有用,而且总是不同步。换句话说,gdb 不会加载我需要的 .c 文件。
与我一起工作的一个人建议在另一个编辑器中打开 .c 文件,并尝试找到 gdb 显示的与 .i 文件一样的行的来源。
还有其他方法吗?如何在 gdb 中加载 .c 文件?如何调试这个 .pc 文件?
iphone - 使用 GDB 从崩溃中检查 Objective C 类(HandleDelegateSource 错误访问)
我正在尝试调试 iPhone 上的间歇性错误,崩溃的痕迹如下所示:
当 GDB 停止时,我希望能够确定有关系统尝试调用哪个选择器的详细信息 - 我现在在 [NSInvocation Invoke] 周围设置了一个断点,但从那时起无法弄清楚如何检查详细信息我停止的 NSInvocation 对象。
linux - 从进程内部转储 Linux 核心文件的好方法是什么?
我们有一个服务器(用 C 和 C++ 编写),它当前捕获一个 SEGV 并将一些内部信息转储到一个文件中。我想在我们捕获 SEGV 时生成一个核心文件并将其写入磁盘,因此我们的支持代表和客户不必对 ulimit 大惊小怪,然后等待崩溃再次发生以获得核心文件。我们过去曾使用过 abort 函数,但它受制于 ulimit 规则并且没有帮助。
我们有一些读取 /proc/pid/map 并手动生成核心文件的遗留代码,但它已经过时,并且看起来不太便携(例如,我猜它在我们的 64 位中不起作用构建)。在 Linux 进程中生成和转储核心文件的最佳方法是什么?
debugging - 使用 Cygwin 可执行文件中的堆栈转储
所以我写了错误的代码,偶尔会崩溃......并创建了一个 stackdump 文件。
使用 addr2line 我可以通过将地址解码为一个来弄清楚程序是如何到达崩溃点的。是否有替代工具可以使用堆栈转储来简化调试?有没有办法在 Insight/Gdb 中加载这些信息?
c++ - 在 Linux 中调试应用程序
我想在 Linux 中调试应用程序。该应用程序是用 C++ 创建的。GUI 是使用 QT 创建的。GUI 与可被视为应用程序后端的静态库链接。
我想调试静态库,但不知道该怎么做。
我尝试使用 gdb
但是我怎样才能附加图书馆呢?
有没有人有在 linux 中调试库的经验?
debugging - 在 x86 上使用 GDB 而不调试符号?
如何使用 GDB 调试在 32 位 x86 处理器上没有调试符号的程序?检查函数参数、局部变量、解析指针对于知道如何做很有用。其目的并不是真正将其用于逆向工程,因为我有时只是懒得安装调试符号,并且很高兴知道如何从 gdb 中获取一些基本信息。
shell - 调用 gdb 自动将参数传递给正在调试的程序
我想编写一个脚本,(在某些条件下)将执行 gdb 并使用一组参数 Y 自动运行一些程序 X。一旦程序完成执行,用户应该留在 gdb 的提示符下,直到他/她明确退出它.
一种方法是让脚本将运行命令和参数 Y 输出到某个文件 F,然后让脚本像这样调用 gdb:
但是有没有办法在不引入临时文件的情况下做到这一点?
c++ - 在 gdb 中显示取消引用的 STL 迭代器
我有一个映射元素的迭代器,我希望 gdb 向我显示该迭代器的“第一个”和“第二个”元素的值。例如:
我可以在代码中使用 p.first 和 p.second,但在 gdb 中看不到它们。对于它的价值,在 dbx 中可以执行“print p.node.second_”之类的操作,但我可以在 gbd 中找到类似的任何内容。
我完全愿意有一个函数来传递对象类型,但我也无法让它工作。
有任何想法吗?谢谢!
c++ - 什么是 __kernel_vsyscall?
我得到了一个看起来与我通常得到的内核非常不同的内核——大多数线程都在 __kernel_vsyscall() 中:
这意味着什么?
编辑:特别是,我通常在“pthread_cond_wait”和“___newselect_nocancel”中看到很多线程,现在这些线程位于每个线程的第二帧 - 为什么这个核心不同?