zoukankan      html  css  js  c++  java
  • 调试信息

    一、什么是调试信息

    调试信息即是符号,用于配合帮助调试器分析调试被调试程序的布局,因此调试信息能够帮助调试器定位变量、函数地址,显示变量的值(包括结构体以及类等复杂的结构),并且能够将地址映射到源代码的行。

    二、调试信息分类

    • 公开函数和变量
      描述跨编译单元的可见函数何变量,调度信息存储其位置和名字
    • 私有函数和变量
      描述所有函数和变量,包括跨编译单元不可见的函数和变量,比如静态函数和变量,参数等,调试信息存储其位置、大小和名字
    • 源文件和行号
      源代码行到程序对应的映射。不包括注释
    • 类型信息
      调试信息存储类型的额外信息,使调试器能够区分变量、参数和返回值类型是int/char或用户自定义类型。对于函数来说,调试器还要知道参数个数,调用约定等
    • FPO信息
      编译时如果使用了FPO优化,调试信息使调试器能够知道函数调用栈的大小。
    • 编辑和继续信息
      主要用于VS实现编辑并继续的功能

    三、调试信息的存储

    调试信息在编译连接的时候产生,调试这个动作肯定是在编译连接之后,那么就需要把这些信息存储起来,为了离开开发环境也能调试,当然是要以文件的形式来永久存储。从微软的发展历史来看,主要有如下三种格式来存储调试信息:

    • COFF格式
      只包含三种调试信息类型:公开函数和变量、源代码行信息、FPO信息。直接存储在可执行文件中。
    • CodeView格式
      包含除编辑和继续信息以外的所有调试信息,既可以存储在可执行文件中,也可以存储在*.DBG文件中
    • PDB格式
      可以存储所有类型的调试信息,只存储在*.PDB文件中

    *.DBG和*.PDB文件就是我们平常说的符号文件。

  • 相关阅读:
    BZOJ 1707 [Usaco2007 Nov]tanning分配防晒霜
    BZOJ2697:特技飞行
    Bridging signals(NlogN最长上升子序列)
    HDU 4291 A Short problem(矩阵+循环节)
    计蒜之道 初赛第一场B 阿里天池的新任务(简单)
    1008: [HNOI2008]越狱
    1022: [SHOI2008]小约翰的游戏John
    1192: [HNOI2006]鬼谷子的钱袋
    2456: mode
    BZOJ-1968
  • 原文地址:https://www.cnblogs.com/yilang/p/11201167.html
Copyright © 2011-2022 走看看