在我的项目中,我有一个将调用malloc()的my_malloc()。我喜欢在gdb中设置条件断点,只有当malloc()的调用函数不等于my_mallc()时,gdb才会进入“gdb>”。这可能吗?目标是识别所有直接调用malloc()而没有通过my_malloc()的代码。 最佳答案 Iliketosetuptheconditionalbreakpointingdbsuchthatgdbwillbreakinto"gdb>"onlywhenthecallerfunctionofmalloc()isnotequaltomy_mal
如何在gdb/TotalView中为复杂类型编写nativeC++调试器可视化工具。我的意思是假设我们有一个复杂类型,它又包含更多不同的类型。如何获得这些复杂类型的调试符号。注意:对于引用,您可以查看适用于VisualStudio的链接。但我需要在Linux上使用gdb/TOtalView。http://www.idigitalhouse.com/Blog/?p=83提前致谢。 最佳答案 GDB和TotalView是完全不同的产品。GDB的指令是here.TotalView的说明是here.如果该链接不起作用,谷歌有一个copy.
如何在gdb/TotalView中为复杂类型编写nativeC++调试器可视化工具。我的意思是假设我们有一个复杂类型,它又包含更多不同的类型。如何获得这些复杂类型的调试符号。注意:对于引用,您可以查看适用于VisualStudio的链接。但我需要在Linux上使用gdb/TOtalView。http://www.idigitalhouse.com/Blog/?p=83提前致谢。 最佳答案 GDB和TotalView是完全不同的产品。GDB的指令是here.TotalView的说明是here.如果该链接不起作用,谷歌有一个copy.
这是我尝试过的,但似乎不起作用:(gdb)callprintf("%d",6)$8=1 最佳答案 你看不到结果是因为stdout(FILE*)有一个输出缓冲区。在缓冲区已满或遇到'\n'之前,它不会向屏幕输出任何内容。这样调用printf:(gdb)call(int)printf("%d\n",6)6$6=2顺便说一句,“$6=2”是printf的结果值。 关于c-如何在gdb中查看printf的输出?,我们在StackOverflow上找到一个类似的问题:
这是我尝试过的,但似乎不起作用:(gdb)callprintf("%d",6)$8=1 最佳答案 你看不到结果是因为stdout(FILE*)有一个输出缓冲区。在缓冲区已满或遇到'\n'之前,它不会向屏幕输出任何内容。这样调用printf:(gdb)call(int)printf("%d\n",6)6$6=2顺便说一句,“$6=2”是printf的结果值。 关于c-如何在gdb中查看printf的输出?,我们在StackOverflow上找到一个类似的问题:
我想调试一个程序,使用gdb。但我通过脚本调用该程序。如何使用gdb?脚本很长,我无法使用gdb的命令行参数直接调用程序。脚本启动时创建的进程也很短暂,因此无法将gdb附加到进程。我想做的是,用那个程序启动gdb,然后添加我的断点执行脚本(仅供引用-它也接受参数),然后当它遇到断点时做任何我想做的事。我查看了gdb中的shell选项,但如果我没记错的话它会生成一个新的shell,并在完成后返回到gdb。这不是我想要的。如果有更好的方法请告诉我。 最佳答案 有几种方法。真正老派的方法是在程序的main中加入一个循环,例如:volati
我想调试一个程序,使用gdb。但我通过脚本调用该程序。如何使用gdb?脚本很长,我无法使用gdb的命令行参数直接调用程序。脚本启动时创建的进程也很短暂,因此无法将gdb附加到进程。我想做的是,用那个程序启动gdb,然后添加我的断点执行脚本(仅供引用-它也接受参数),然后当它遇到断点时做任何我想做的事。我查看了gdb中的shell选项,但如果我没记错的话它会生成一个新的shell,并在完成后返回到gdb。这不是我想要的。如果有更好的方法请告诉我。 最佳答案 有几种方法。真正老派的方法是在程序的main中加入一个循环,例如:volati
我在ARM9板上运行嵌入式应用程序,总闪存大小仅为180MB。我能够运行gdb,但是当我运行时(gdb)生成核心转储我得到一个错误warning:Memoryreadfailedforcorefilesection,1048576bytesat0x4156c000.warning:Memoryreadfailedforcorefilesection,1048576bytesat0x50c00000.Savedcorefilecore.5546Theprogramisrunning.Quitanyway(anddetachit)?(yorn)[answeredY;inputnotfrom
我在ARM9板上运行嵌入式应用程序,总闪存大小仅为180MB。我能够运行gdb,但是当我运行时(gdb)生成核心转储我得到一个错误warning:Memoryreadfailedforcorefilesection,1048576bytesat0x4156c000.warning:Memoryreadfailedforcorefilesection,1048576bytesat0x50c00000.Savedcorefilecore.5546Theprogramisrunning.Quitanyway(anddetachit)?(yorn)[answeredY;inputnotfrom
假设我已经将gdb附加到一个进程,并且在它的内存布局中有一个文件和行号,我想要它的内存地址。如何获取文件x中第n行的内存地址?这是在Linuxx86上。 最佳答案 (gdb)infolinetest.c:56Line56of"test.c"startsataddress0x4005aeandendsat0x4005ba.此外,对于python,您可以使用来自Symbol-Tables-In-Python这目前需要来自cvs的最新版本的gdb,但我想将在7.5中普遍可用(gdb)pyx=gdb.find_pc_line(gdb.dec