草庐IT

DEBUGGING

全部标签

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

linux - 使用远程 gdbserver 启动 ddd

我正在使用ddd调试在远程目标上运行的程序(例如,远程gdbserver通过端口1234在本地主机上运行,​​但仍然充当远程目标)。我知道你可以通过打开ddd连接到gdbserver,然后在ddd的gdb命令行调用targetremotelocalhost:1234,如下所述:http://www.gnu.org/software/ddd/manual/html_mono/ddd.html#Remote%20Program但是,我讨厌每次打开ddd时都必须调用targetremotelocalhost:1234命令,我想将它设置为使用别名自动连接到gdbserver。我尝试运行ddd-

linux - 使用远程 gdbserver 启动 ddd

我正在使用ddd调试在远程目标上运行的程序(例如,远程gdbserver通过端口1234在本地主机上运行,​​但仍然充当远程目标)。我知道你可以通过打开ddd连接到gdbserver,然后在ddd的gdb命令行调用targetremotelocalhost:1234,如下所述:http://www.gnu.org/software/ddd/manual/html_mono/ddd.html#Remote%20Program但是,我讨厌每次打开ddd时都必须调用targetremotelocalhost:1234命令,我想将它设置为使用别名自动连接到gdbserver。我尝试运行ddd-

linux - 如何在引导时捕获整个内核 panic

我正在尝试使用Buildroot构建自定义内核。在构建镜像并在VirtualBox环境中启动它之后,内核总是在GRUB阶段之后出现panic。我所见的一般总结:]CPU:0PID:1...]Hardwarename:innotekGmbH...]]CallTrace:][]dump_stack+...][]panic+...][]do_exit+...]...]KernelOffset:0x0from0xc0400000...]---[endKernelpanic-notsyncing:Attemptedtokillinit!...现在,我假设这只是我想看到的消息的尾部,但我没有办法查

linux - 如何在引导时捕获整个内核 panic

我正在尝试使用Buildroot构建自定义内核。在构建镜像并在VirtualBox环境中启动它之后,内核总是在GRUB阶段之后出现panic。我所见的一般总结:]CPU:0PID:1...]Hardwarename:innotekGmbH...]]CallTrace:][]dump_stack+...][]panic+...][]do_exit+...]...]KernelOffset:0x0from0xc0400000...]---[endKernelpanic-notsyncing:Attemptedtokillinit!...现在,我假设这只是我想看到的消息的尾部,但我没有办法查

linux - gdb如何从脚本执行目标程序

我想调试一个程序,使用gdb。但我通过脚本调用该程序。如何使用gdb?脚本很长,我无法使用gdb的命令行参数直接调用程序。脚本启动时创建的进程也很短暂,因此无法将gdb附加到进程。我想做的是,用那个程序启动gdb,然后添加我的断点执行脚本(仅供引用-它也接受参数),然后当它遇到断点时做任何我想做的事。我查看了gdb中的shell选项,但如果我没记错的话它会生成一个新的shell,并在完成后返回到gdb。这不是我想要的。如果有更好的方法请告诉我。 最佳答案 有几种方法。真正老派的方法是在程序的main中加入一个循环,例如:volati

linux - gdb如何从脚本执行目标程序

我想调试一个程序,使用gdb。但我通过脚本调用该程序。如何使用gdb?脚本很长,我无法使用gdb的命令行参数直接调用程序。脚本启动时创建的进程也很短暂,因此无法将gdb附加到进程。我想做的是,用那个程序启动gdb,然后添加我的断点执行脚本(仅供引用-它也接受参数),然后当它遇到断点时做任何我想做的事。我查看了gdb中的shell选项,但如果我没记错的话它会生成一个新的shell,并在完成后返回到gdb。这不是我想要的。如果有更好的方法请告诉我。 最佳答案 有几种方法。真正老派的方法是在程序的main中加入一个循环,例如:volati

Linux:如何调试 SIGSEGV?如何追溯错误来源?

我的firefox从今天开始就崩溃了。我没有对系统或Firefox配置进行任何更改。我用strace-ff-odumpfile.txtfirefox追踪问题。帮助不大。我在两个生成的进程转储中看到段错误,但是我如何才能追踪他们的原因呢?运行10秒后崩溃,strace生成了22MB的数据。这是输出的一个片段,您可以在中间看到实际的SIGSEGV。:read(19,"\372",1)=1gettimeofday({1245590019,542231},NULL)=0read(3,"\6\0[Qmy\26\0\3\1\0\0Y\0\200\2\0\0\0\0\323\3A\0\323\3(\

Linux:如何调试 SIGSEGV?如何追溯错误来源?

我的firefox从今天开始就崩溃了。我没有对系统或Firefox配置进行任何更改。我用strace-ff-odumpfile.txtfirefox追踪问题。帮助不大。我在两个生成的进程转储中看到段错误,但是我如何才能追踪他们的原因呢?运行10秒后崩溃,strace生成了22MB的数据。这是输出的一个片段,您可以在中间看到实际的SIGSEGV。:read(19,"\372",1)=1gettimeofday({1245590019,542231},NULL)=0read(3,"\6\0[Qmy\26\0\3\1\0\0Y\0\200\2\0\0\0\0\323\3A\0\323\3(\

c++ - 在 Linux 上为 Windows 开发人员调试

我主要是在Windows机器上完成基本(新手级别)的软件开发,但我一直使用MSVisualStudio来帮助我逐步完成调试过程。但是,现在看来我将使用Linux,所以为了准备好跳转,我想确保我有一个/多个工具排好队来帮助我逐步完成代码和调试。不幸的是,当我口头询问人们如何在Linux上进行调试时,我通常会得到以下回答:“哦,我只是放了一堆打印语句。”我的天啊!没办法,但这是他们的答案。由于它在Linux上,并且将在CentOS32位操作系统上使用C++代码,我希望这是一个首选的开源解决方案。所以,我想我要求在CentOSLinux上为C++代码提供首选的OpenSourceIDE。感谢