今天遇到个问题,某人的代码有断错误,导致我的工作无法展开,抱怨的就不多说了,正好让我解决了一个gdb的操作问题!

现在说下gdb+coredump的调试流程

在实机上先打开产生core文件的设置,ulimit -c unlimited  ,这将使程序在遇到断错误的时候保留下当时的堆栈信息,而这个core文件的大小没有进行限制,当然,还可以更改core文件的产生路径,具体可以google下。 之后运行断错误程序,获取产生的core文件。

运用平台指定的gdb程序  调用arm-linux-gdb -c core

bt下

这时会看到#0  0x2ae1cc9e in ?? ()之类的堆栈信息,因为没有指定带调试信息的调试程序,所以无法读书函数的符号表,所以显示不出当时的堆栈运行到那个函数。

输入file exec ,显示出Reading symbols from /media/disk/work/ngi/work_space/ngi/out/target/product/high/system/usr/bin/testmode...done

说明加载进了符号表,在bt下就应该能看到堆栈的函数名了

(gdb) bt

#0  0x2ae1cc9e in ?? ()

#1  0x2ac02600 in ?? ()

#2  0x2ac02600 in ?? ()

奇怪 为什么还是没呢?  原来这时候程序是运行到动态库中去了,那既然如此当然需要把动态库中的符号表信息读入gdb咯!

事实是否如我猜测呢?

输入info share

(gdb) info share

warning: .dynamic section for "/media/disk/work/ngi/work_space/ngi/prebuilts/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/arm-fsl-linux-gnueabi/multi-libs/lib/libm.so.6" is not at the expected address (wrong library or version mismatch?)

warning: .dynamic section for "/media/disk/work/ngi/work_space/ngi/prebuilts/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/arm-fsl-linux-gnueabi/multi-libs/lib/libc.so.6" is not at the expected address (wrong library or version mismatch?)

warning: Could not load shared library symbols for 60 libraries, e.g. /lib/libncore.so.

Use the "info sharedlibrary" command to see the complete listing.

Do you need "set solib-search-path" or "set sysroot"?

From        To          Syms Read   Shared Object Library

No          /lib/libncore.so

No          /lib/libicuuc.so

No          /lib/liblog.so

No          /lib/libncutility.so

No          /lib/libncplatform.so

No          /lib/libncdevice.so

No          /lib/libnhcommon.so

No          /lib/libnhdiag.so

No          /lib/libnhucom.so

No          /lib/libnhkey.so

No          /lib/libnhsysctrl.so

No          /lib/libzeromq.so

No          /lib/libbinder.so

No          /lib/libnceventsys.so

No          /usr/lib/libncgstreamer.so

No          /lib/libGLESv1_CM.so

No          /lib/libEGL.so

No          /lib/libGAL.so

No          /usr/lib/libncgraphics.so

No          /usr/lib/libGraphicsCore.so

No          /usr/lib/liboverlay.so

No          /usr/lib/libtuner.so

No          /usr/lib/libsourceusbapi.so

No          /usr/lib/libsourceusb.so

No          /usr/lib/libnhbtproxy.so

No          /usr/lib/libgmock.so

No          /lib/libncstorage.so

No          /lib/libnhvehicle.so

No          /lib/libnhcanbus.so

0x2ae83e80  0x2ae91fdc  No          /media/disk/work/ngi/work_space/ngi/prebuilts/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/arm-fsl-linux-gnueabi/multi-libs/lib/libpthread.so.0

0x2adb56a0  0x2adb8e58  No          /media/disk/work/ngi/work_space/ngi/prebuilts/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/arm-fsl-linux-gnueabi/multi-libs/lib/librt.so.1

0x2adc38fc  0x2adc4614  No          /media/disk/work/ngi/work_space/ngi/prebuilts/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/arm-fsl-linux-gnueabi/multi-libs/lib/libdl.so.2

No          /lib/libstdc++.so.6

0x2b0f61a8  0x2b15a9b8  No          /media/disk/work/ngi/work_space/ngi/prebuilts/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/arm-fsl-linux-gnueabi/multi-libs/lib/libm.so.6

No          /lib/libgcc_s.so.1

0x2b179440  0x2b262044  No          /media/disk/work/ngi/work_space/ngi/prebuilts/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/arm-fsl-linux-gnueabi/multi-libs/lib/libc.so.6

0x2aaef780  0x2ab07a20  No          /media/disk/work/ngi/work_space/ngi/prebuilts/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/arm-fsl-linux-gnueabi/multi-libs/lib/ld-linux.so.3

No          /lib/libutils.so

可以看到很多库的符号表都没有被读入,看来果然如此。

输入用set solib-search-path + 库的路径 指定所要读取的符号表动态库所在位置,结果会看到很多done之类的信息,说明加载成功,

现在bt下就能看到堆栈的详细信息了。

(gdb) bt

#0  nutshell::SourceUSB_ScannerThread::setScannerState (this=0x0,

state=nutshell::SourceUSB_ScannerThread::SCANNERSTATE_START)

at system/MediaLibrary/SourceUSB/src/Thread_Scanner/SourceUSB_ScannerThread.cpp:138

#1  0x2ae1ce1a in nutshell::SourceUSB_Scanner_EventHandler::onHandle (this=0xaf4a0, cEvt=...)

at system/MediaLibrary/SourceUSB/src/Thread_Scanner/SourceUSB_Scanner_EventHandler.cpp:50

#2  0x2ae17018 in nutshell::SourceUSB_EventHandlerBase::onHandle (this=, cEvt=)

at system/MediaLibrary/SourceUSB/src/include/base/SourceUSB_EventHandlerBase.h:35

#3  0x2abe85b6 in nutshell::PI_EventHandlerThreadImp::run (this=0xaef88)

at system/MediaLibrary/common/TsmThreadLib/src/PI_EventHandlerThreadImp.cpp:93

#4  0x2ac04e34 in ?? ()

#5  0x2ac04e34 in ?? ()

之后就是去告诉某人这个问题所在了

gdb coredump oracle,GDB + CoreDump 调试记录相关推荐

  1. oracle触发器调试日志,Oracle 11g 触发器调试记录Error: PLS-00201: identifier'SYS.DBMS_SYSTEM' must be declared...

    1,触发器内容如下 CREATE OR REPLACE TRIGGER"LOGON_DENIED_TO_ALERT" AFTER servererror ON DATABASE D ...

  2. python gdb coredump_通过gdb调试coredump

    一.什么是coredump 我们经常听到大家说到程序core掉了,需要定位解决,这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止,并且在满足一定条件下(这里为什么说需要 ...

  3. linux下 如何调试php,linux下使用gdb对php源码调试

    title: linux下使用gdb对php源码调试 date: 2018-02-11 17:59:08 tags: --- linux下使用gdb进行php调试 调试了一些php的漏洞,记录一下大概 ...

  4. android gdb 远程调试工具,gdb输入/输出错误远程调试到Android

    我试图调试一个调用本地代码来执行一些GL渲染的android应用程序.本机代码是我试图移植的现有代码(并且我不太清楚).我已经有了正确编译,链接和正确安装的代码,并且我有一些原生函数调用了从我的Jav ...

  5. gdb java,调用gdb来调试java程序

    错误没有这样的文件或目录,gdb 如果错误消息来自emacs,则表示未安装 gdb . 要解决此问题,请安装 gdb . 请注意 gdb 不是emacs的一部分,它是一个单独的程序 . 如果你得到一个 ...

  6. gdb 的用法(Linux调试器)

    在Linux应用程序开发中,最常用的调试器是gdb,它可以在程序中设置断点.查看变量值.一步一步跟踪程序的执行过程. GDB(GNU symbolic debugger)简单地说就是一个调试工具.它是 ...

  7. 使用GDB中的watch来调试指来指去的指针

    引言 C代码中经常会有大量的指针在很多不同函数中传来传去,甚至还有强制类型转换,让阅读代码和调试BUG的人苦不堪言.更有甚者将全局变量指针赋值给局部变量,然后再作为参数传出并修改. 这是官网的说明:h ...

  8. coredump简介与coredump原因总结

    coredump简介与coredump原因总结 什么是coredump? 通常情况下coredmp包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息等.可以理解为把程序工作的当前状态存储成一个 ...

  9. ROS上同时预览depth,IR,RGB 调试记录

    ROS上同时预览depth,IR,RGB 调试记录 用rviz同时显示RGB,IR,DEPTH(验证设备:astraprosm,canglong2,deeyea) 1.编译libuvc库 cd lib ...

最新文章

  1. 实操教程|Pytorch常用损失函数拆解
  2. XML 增、删、改和查示例
  3. Selenium常用API的使用java语言之7-控制浏览器操作
  4. [编转]Android localsocket 的基础和使用实践: 02
  5. linux环境中nagios(nagios core)安装?nagios安装?
  6. swing JTable
  7. springcloud 心得记录
  8. unity3d Physics.Raycast和Ray(射线)
  9. MATLAB免疫算法求解超市物流配送中心选址问题实例
  10. 微信抢号软件_强推|那些写微信公众号一定要拥有的软件
  11. kali 破解无线密码
  12. 中国区块链专利申请数破万:阿里巴巴、联通、复杂美稳居前三甲
  13. Kafka ~ 消息队列之推还是拉
  14. java date 构造方法_Java Date的概述和构造方法
  15. Minieye-M3 防撞预警产品硬件系统方案---基于AR0132RGB+MTK架构
  16. 我的世界服务器物品展示怎么得,我的世界物品展示框详解攻略 物品展示框怎么做...
  17. 国内外vps有什么区别?
  18. 使用git将代码提交到github
  19. 仿京细菜谱微信小程序源码云开版
  20. 矩阵的最小路径和——动态规划

热门文章

  1. win10下安装Ubuntu18.4双系统(适合小白)
  2. Halcon 学习总结——制作标定板(函数gen_caltab)
  3. vue之initComputed模块源码说明
  4. 理解Scala - 核心规则
  5. Core Java-多线程-线程的生命周期
  6. 03 入门 - 安装MVC 5和创建应用程序
  7. C++类中的main函数
  8. 点击加入购物车直接转到购物车页面
  9. jquery通过id或name获取标签的值,以及简单的js正则表达式
  10. 面试常备题---插入排序