`

gdb+core 定位so崩溃

阅读更多
最近专门搞了一下so的调试。总结一下

关于core dump的输出准备:
执行程序的linux user一定要先打开core dump开关,注意:这个开关是与用户会话关联的,因此要先执行ulimit -c unlimited,在执行程序。可以用ulimit -c或ulimit -a查看一下。

关于程序的准备:
so必须编译成debug版,但是可执行文件不一定必须要debug。调试时一定要清楚so被哪个可执行程序调用,可执行程序哦~~~~
启动可执行程序没有什么特殊要求的,只是要注意一定要用开启了core dump开关的用户执行就可以了。启动后就静静地等待崩溃吧。。。。
崩溃产生的core dump文件会出现在可执行程序的执行命令所在目录。

如果core dump文件没有找到,可能是因为core dump开关、core dump文件大小限制、没有找到可执行文件目录。。。。

找到后使用gdb myexec core.XXXXXX 来查看崩溃
正常的话可以查到   Program terminated with signal 7, Bus error.
使用bt命令可以查看崩溃时的堆栈信息:
(gdb) bt
#0  0x00002aaaab0fc470 in google_breakpad::ExceptionHandler::HandleSignal (this=0x3e8, sig=1366325088, info=0x0, uc=0x27) at ../../common/linux/linux_syscall_support.h:2207      <----崩溃在这哦
#1  0x0000000000000000 in ?? ()

分享到:
评论

相关推荐

    GDB之在线调试与Coredump分析

    通过分析Coredump文件,可以定位到程序崩溃时的代码行以及变量状态,从而分析出程序崩溃的原因。 分析Coredump文件一般需要借助GDB工具,主要步骤如下: 1. 确保Coredump文件存在,通常文件路径和名称会在崩溃日志...

    嵌入式gdb调试core

    通过以上步骤,我们可以在嵌入式开发中有效地利用GDB调试`core`文件,从而快速定位和解决程序中的异常问题。这对于提高开发效率、减少错误复现时间具有重要意义。希望本文能够帮助您更好地理解和掌握GDB调试技巧。

    使用gdb分析core文件相关方法

    通过上述步骤,我们可以有效地使用gdb来分析core文件,进而定位并解决程序崩溃的问题。值得注意的是,实际操作中可能还需要结合日志文件和其他相关信息来进行综合分析。此外,熟悉gdb的各种命令和技巧也是非常重要的...

    利用core文件排查系统崩溃的信息详细步骤

    利用core文件排查系统崩溃的信息详细步骤 核心dump(Core Dump)是计算机系统崩溃或出现严重错误时,操作系统将当前进程的内存内容写入磁盘的文件,用于调试和故障排除。以下是利用 Core 文件排查系统崩溃的信息...

    gdb 核心语法

    综上所述,掌握gdb的核心语法不仅能够帮助开发者有效地定位和解决程序中的错误,还能提高调试效率,使软件开发过程更加顺畅高效。通过本文介绍的知识点,希望读者能够更好地理解和运用gdb的各项功能,在实际开发工作...

    捕获系统崩溃信息.docx

    在涉及共享库(SO)的程序崩溃时,同样可以使用GDB进行调试。通过查看内存地址,结合`dmesg`命令获取的系统崩溃信息,可以帮助定位问题所在。 在Windows系统中,获取系统崩溃日志的操作流程如下: 1. **查看系统...

    coredump文件的生成与解析.docx

    coredump 文件的生成与解析 coredump 文件是 Linux 操作系统中的一个重要概念,它记录了程序崩溃时的...通过对 coredump 文件的分析,可以了解程序崩溃的原因和函数调用路径,从而帮助开发者快速地定位和解决问题。

    linux下core文件调试方法

    core文件是Linux下非常有用的调试工具之一,通过合理地设置core文件的生成与命名规则,并结合使用GDB和其他辅助工具,我们可以有效地定位程序中的错误,解决复杂的问题。此外,掌握core文件的高级调试技巧,如多线程...

    breakpad.zip

    本库用AndroidStudio编译google新版本breakpad并引入Android项目,用于定位底层so库代码崩溃异常; 同时实现了一个简便的CrashHandler用于捕获上层Java代码中的异常,很实用,比gdb/coredump要好用,适合引入项目中...

    Linux下core文件的使用方法详解

    如果需要在本地调试远程设备产生的core文件,需使用对应平台的GDB版本,并设置正确的共享库搜索路径,例如`solib-search-path /path/to/library`。 总的来说,理解和利用core文件是Linux系统中诊断和修复程序异常的...

    段错误的定义及常用的调试方法

    当程序因为段错误而崩溃时,GDB可以捕获异常,并将程序暂停在引发错误的位置,显示相关的调用堆栈和局部变量状态。开发者可以通过GDB的命令行接口,逐步执行代码,查看内存和寄存器的状态,从而定位导致段错误的具体...

    gdbinit-perl:.gdbinit 用于调试 perl 核心转储

    Perl核心转储(core dump)是在程序运行过程中因某种原因导致的系统崩溃或异常退出时,操作系统生成的一种文件,包含了程序运行时内存的状态。通过分析这个转储文件,开发者可以查看程序在出错时的堆栈信息、变量值...

    linux编译与调试

    2. **核心转储**:当程序异常崩溃时,可以通过生成核心转储文件分析问题,gdb可配合core文件进行后处理。 3. **日志记录**:Linux下常用syslog、dmesg等工具记录系统日志,用于后期排查问题。 4. **strace和ltrace...

    google-coredumper-开源

    3. 集成到应用程序:将库文件(如libcoredumper.a或libcoredumper.so)链接到你的应用程序,并在代码中调用相应的API,例如`core_dump()`函数,来触发核心转储。 4. 创建核心转储:在适当的时候调用API,系统会生成...

    windows系统上安装与使用Android NDK r5 .doc

    7. 在包选择界面,搜索并勾选NDK开发所需的包,如autoconf2.1、automake1.10、binutils、gcc-core、gcc-g++、gcc4-core、gcc4-g++、gdb、pcre、pcre-devel、gawk、make等。 8. 确认并安装所选的包。 **三、配置和...

Global site tag (gtag.js) - Google Analytics