美文网首页
gdb使用symbol文件调试程序

gdb使用symbol文件调试程序

作者: David栗子 | 来源:发表于2017-03-07 15:17 被阅读0次

今天发现项目里的Makefile在debug和release版本之间有两行不一样的地方:

@objcopy --only-keep-debug bin/Release/Server bin/Release/Server.symbol
@objcopy --strip-debug bin/Release/Server

在这两行之前都是调用子目录里的Makefile来生成Server二进制文件,这两行我不知道是什么意思,于是man了一下objcopy,发现手册里是这样解释的:

objcopy - copy and translate object files.

--strip-debug

Do not copy debugging symbols or sections from the source file.

不从源文件中拷贝调试符号或段。

--only-keep-debug

Strip a file, removing contents of any sections that would not be stripped by --strip-debug and leaving the debugging sections intact.

这个正好与--strip-debug相反,是从文件中抽离--strip-debug所剩下的内容,也就是留下完整的调试信息。

这样处理之后,就将原来的Server文件一分为二,产生了一个没有调试信息的文件Server和一个只有调试信息的Server.symbol,Server文件明显变小了。

那么symbol文件如何使用呢?假如我们运行这个Server程序时因为某种原因宕掉了,需要用gdb来调试。因为Server本身不包含任何debug信息,这时候就需要加载symbol文件。

可以在gdb启动时制定symbol文件:

$ gdb -s Server.symbol -e Server -c core

也可以在gdb运行过程中加载:

$gdb Server core
#(这里中间略去gdb启动的信息)
(gdb) symbol-file Server.symbol

这样就可以用symbol文件来进行调试了。

相关文章

  • gdb使用symbol文件调试程序

    今天发现项目里的Makefile在debug和release版本之间有两行不一样的地方: 在这两行之前都是调用子目...

  • 使用gdb调试程序

    工作中接手一个工程,使用cmake写的脚本来进行编译。因为工程比较大,所以迁移到其他ide支持的编译方式的情...

  • 一、调试-使用gdb调试linuxC程序

    gdb是linux操作系统特有的调试工具,可以完成一般IDE提供的所有调试功能。使用gdb调试程序之前,必须使用g...

  • GDB学习笔记

    本文介绍使用gdb调试程序的常用命令。 简介 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。如果...

  • GDB使用指南

    gdb是linux下的一款动态调试工具,以下是使用gdb调试程序常用到的命令,我尽量以图文的方式进行讲解,希望对初...

  • 在docker中使用gdb调试程序

    在docker的容器中,不能使用gdb调试程序。经过调查发现是原因是ptrace: Operation not p...

  • gcc优化级别|gdb调试

    优化级别 截图自知乎 gdb调试 将代码编译成可调试程序 编译时加 -g(shell内或makefile文件中都可...

  • Mac上使用 gdb 调试程序

    最新版本的 Mac 默认只能使用 lldb 进行程序调试,但对于习惯使用 gdb的人来说还是希望在Mac下使用gd...

  • Linux编程环境

    本文内容:1. 编译过程2. GCC编译器3. Makefile4. 使用GDB调试程序 1. 编译过程 2. G...

  • macOS安装gdb

    今天在mac上想用gdb调试程序时,才发现macOS没有自带gdb, 需要自行安装。安装过程记录如下。主要参考ht...

网友评论

      本文标题:gdb使用symbol文件调试程序

      本文链接:https://www.haomeiwen.com/subject/whpmgttx.html