gdb 分析错误原因

上例中gdb的输出信息存储在debug.log中,终端关闭 。gdb不退出,它继续运行,直到myprg出错退出,要调试,方法1: #,/myprg//运行程序#psef|grepmyprg//找出myprg #gdbmyprg 2032 > debug.log//let-0的PID接管myprg # (-0)的操 。

1、段错误(coredumpedthe problem nocorecore 程序遇到段错误(通常是非法访问内存造成的)时会生成一个核心文件 。如果这个程序包含调试信息(编译时加G选项),那么使用gdb读取这个核心文件,快速定位出错的源代码 。本来我在软件公司实习的时候(用的是RedHatEnterpriseLinux)觉得查错很方便,但是我自己的DebianGNU/Linux默认不生成这个文件 。

2、使用GNU/ gdb调试LinuxC/C可执行程序查看出错源代码、设置断点 gdb是GNU开源组织发布的一款功能强大的Linux程序调试工具,比图形化调试工具更强大,主要用于调试C/C语言程序 。可执行程序的调试版本包含供程序员调试程序的调试信息 。为了方便用户,可执行程序的发布版本通常被优化以使程序在代码大小和运行速度方面最优 。用gcc/g编译时,要添加G选项,生成可执行程序的调试版本 , 否则gdb不能用于调试 。

3、[ gdb]函数堆栈乱掉的解决办法[转]程序核心掉了,想调试一下 , 但是函数栈乱七八糟的,恶心...Google/wiki之后,找到了两个解决方案 。x86手动backtracetistutorial将使用stackframepoint和current instruction pointer . consi向您显示如何使用stack frame point和current instruction pointer . consi . under the followinggdbback trace:Itptycleearthatthis中断,

如果在4、如何找出在Android的一个SIGSEGV的原因Linux下编程(尤其是服务器端程序)由于内存溢出或其他原因出现“非法操作”,程序就会悄无声息地死亡 , 初学者往往不知道程序死亡的原因 。我也吃过程序死的亏 。其实“非法操作”大多是因为“段错误”,也就是SIGSEGV 。并且找到了SIGSEG号被抛出的位置,也就找到了程序死亡的原因 。以下是一些捕捉SIGSEGV的方法 。

方法一:# 。/myprg//运行程序#psef|grepmyprg//找出myprg #gdbmyprg 2032 > debug.log//Let-0的PID接管myprg # (上面的例子中gdb的输出信息存储在debug.log中,终端关闭 。gdb不退出 , 它继续运行,直到myprg出错退出 。
【gdb 分析错误原因】最后一个操作很好理解,gdbmyapp,然后就可以运行了 。你可以看到符号然后你执行file命令,这个命令清理程序和符号,但是前面的操作不太好理解,在gdbmyapp之后,list命令没有符号,但是您可以运行它 。不是第一次编辑的myapp没有加G,没有生成调试符号吗 。

    推荐阅读