是否像可执行文件这样的二进制文件是由符号组成的,debugging符号是其中的一种?
如何理解符号?
每个命令npm错误:EEXIST:文件已经存在,mkdir'c: users user appdata Roaming npm'
如何运行一个快捷方式
Windows缺lesspython.h
如何获得一个JobObject的句柄,而不知道它的名字?
使用inpout32 windows7(64bit)访问并口的控制寄存器
一个非常高的层次解释如下:
首先,符号不在C ++世界里。 它们存在于几种高级语言(如C,C ++等)的二进制文件中,当使用某些指定的设置进行构建时。 我们来定义
'int i = 2;'
在二进制中,“i”只是一个内存位置(例如0x10203040),正在使用2进行初始化。没有称为“i”的内存位置。 通过调试符号将名称“i”分配给该内存位置,该符号使用二进制文件(使用某些标志构建时)加载,该文件将“内存位置”映射保留到“源级别名称”。
例如, PE文件格式提供了用于存储调试符号信息的调试目录。 这些在调试时非常有用,因为在没有这样的调试符号的情况下,仅仅根据binray 0和1进行调试将是非常非常有挑战性的任务。 因此,当您调试使用调试标志构建的这种二进制(具有'i'的上述定义)时,调试器通过PE中的调试目录知道存储器位置“0x10203040”对应于'i'文件。
呃,不。 可执行文件包含机器代码。 和全局变量的初始化值。 在Windows上,调试信息通常存储在一个单独的文件.pdb中。 该文件中有关程序中某个函数或变量的调试数据称为符号。
这里描述了 dbghelp API。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。