草庐IT

c++ - 调试客户机器上生成的核心文件

我们通过在客户的机器上运行我们的软件获得核心文件。不幸的是,因为我们总是使用-O2不带调试符号进行编译,这导致了我们无法弄清楚崩溃原因的情况,我们修改了构建,所以现在它们生成-g和-O2在一起。然后,我们建议客户运行-g二进制文件,以便更容易调试。我有几个问题:如果核心文件是从我们在Dev中运行的Linux发行版以外的发行版生成的,会发生什么情况?堆栈跟踪是否有意义?有没有关于在Linux或Solaris上进行调试的好书?面向示例的东西会很棒。我正在寻找真实的例子来弄清楚例程崩溃的原因以及作者如何找到解决方案。更多中级到高级的东西会很好,因为我已经这样做了一段时间了。一些组装也会很好。

python - 有人有 Linux 上 fd_set 的 gdb pretty-print 代码吗?

现代版本的gdb允许集成python代码以“pretty-print”复杂的数据结构。对于C++的STL类以及一些更常见的boost.org类型,有一些非常pretty-print实现。在网络编程中,经常会遇到select/poll调用。poll()使用数据结构数组,而select()使用fd_set。有没有人遇到过fd_set的pretty-print实现,最好是可移植的,但即使是特定于平台的也可以。理想情况下,它是linux/x86,但我愿意接受任何东西并希望能够适应。 最佳答案 好吧,这是我写的东西,它似乎在Linux下对我有

python - 有人有 Linux 上 fd_set 的 gdb pretty-print 代码吗?

现代版本的gdb允许集成python代码以“pretty-print”复杂的数据结构。对于C++的STL类以及一些更常见的boost.org类型,有一些非常pretty-print实现。在网络编程中,经常会遇到select/poll调用。poll()使用数据结构数组,而select()使用fd_set。有没有人遇到过fd_set的pretty-print实现,最好是可移植的,但即使是特定于平台的也可以。理想情况下,它是linux/x86,但我愿意接受任何东西并希望能够适应。 最佳答案 好吧,这是我写的东西,它似乎在Linux下对我有

c - 为什么 gdb 在从函数返回时停在与 "i b"显示不同的行?

这是我要调试的程序:#includeinti=5;intmain(void){intx=3;display(x);return0;}voiddisplay(intx){for(i=0;i这段代码来自这里http://www.dirac.org/linux/gdb/05-Stepping_And_Resuming.php#breakpointsandwatchpoints.这是问题所在:(gdb)breakdisplayBreakpoint1at0x40051e:filetry5.c,line15.(gdb)runStartingprogram:/home/ja/gdb/learning

c - 为什么 gdb 在从函数返回时停在与 "i b"显示不同的行?

这是我要调试的程序:#includeinti=5;intmain(void){intx=3;display(x);return0;}voiddisplay(intx){for(i=0;i这段代码来自这里http://www.dirac.org/linux/gdb/05-Stepping_And_Resuming.php#breakpointsandwatchpoints.这是问题所在:(gdb)breakdisplayBreakpoint1at0x40051e:filetry5.c,line15.(gdb)runStartingprogram:/home/ja/gdb/learning

c - gdb:仅当调用函数不等于某个值时才会有条件地中断函数

在我的项目中,我有一个将调用malloc()的my_malloc()。我喜欢在gdb中设置条件断点,只有当malloc()的调用函数不等于my_mallc()时,gdb才会进入“gdb>”。这可能吗?目标是识别所有直接调用malloc()而没有通过my_malloc()的代码。 最佳答案 Iliketosetuptheconditionalbreakpointingdbsuchthatgdbwillbreakinto"gdb>"onlywhenthecallerfunctionofmalloc()isnotequaltomy_mal

c - gdb:仅当调用函数不等于某个值时才会有条件地中断函数

在我的项目中,我有一个将调用malloc()的my_malloc()。我喜欢在gdb中设置条件断点,只有当malloc()的调用函数不等于my_mallc()时,gdb才会进入“gdb>”。这可能吗?目标是识别所有直接调用malloc()而没有通过my_malloc()的代码。 最佳答案 Iliketosetuptheconditionalbreakpointingdbsuchthatgdbwillbreakinto"gdb>"onlywhenthecallerfunctionofmalloc()isnotequaltomy_mal

c++ - 如何在 gdb/TotalView 中为复杂类型编写 native C++ 调试器可视化工具

如何在gdb/TotalView中为复杂类型编写nativeC++调试器可视化工具。我的意思是假设我们有一个复杂类型,它又包含更多不同的类型。如何获得这些复杂类型的调试符号。注意:对于引用,您可以查看适用于VisualStudio的链接。但我需要在Linux上使用gdb/TOtalView。http://www.idigitalhouse.com/Blog/?p=83提前致谢。 最佳答案 GDB和TotalView是完全不同的产品。GDB的指令是here.TotalView的说明是here.如果该链接不起作用,谷歌有一个copy.

c++ - 如何在 gdb/TotalView 中为复杂类型编写 native C++ 调试器可视化工具

如何在gdb/TotalView中为复杂类型编写nativeC++调试器可视化工具。我的意思是假设我们有一个复杂类型,它又包含更多不同的类型。如何获得这些复杂类型的调试符号。注意:对于引用,您可以查看适用于VisualStudio的链接。但我需要在Linux上使用gdb/TOtalView。http://www.idigitalhouse.com/Blog/?p=83提前致谢。 最佳答案 GDB和TotalView是完全不同的产品。GDB的指令是here.TotalView的说明是here.如果该链接不起作用,谷歌有一个copy.

linux - 最小核心转储(堆栈跟踪+仅限当前帧)

我可以在Linux上配置进入核心转储的内容吗?我想获得类似Windows小型转储的信息(应用程序崩溃时有关堆栈帧的最少信息)。我知道您可以使用ulimit为核心文件设置最大大小,但这不允许我控制核心内部的内容(即不能保证如果我将限制设置为64kb它例如,将转储堆栈的最后16页)。此外,如果可能的话,我想以编程方式(通过代码)设置它。我查看了mancore提到的/proc/PID/coredump_filter文件,但对于我的目的来说它似乎过于粗糙。提供一些背景信息:出于多种原因,我需要微型核心文件:我需要通过网络为众多(数千)客户收集它们;此外,这些是带有少量SD卡的嵌入式设备,以及用