聊一聊 .NET高级调试 中必知的符号表

💡 原文中文,约4600字,阅读约需11分钟。
📝

内容提要

本文介绍了程序编译的四个阶段:预处理、编译、汇编和链接。在Windows平台上还介绍了pdb文件解析和符号表的作用和使用。

🎯

关键要点

  • 符号表记录程序的生物特征,辅助可视化调试。

  • 程序编译分为四个阶段:预处理、编译、汇编和链接。

  • 预处理阶段整合代码,处理 #include 和 #define。

  • 编译阶段将C代码编译成汇编代码,提供辅助信息。

  • 汇编阶段将汇编代码转成机器代码,生成二进制文件和符号表。

  • 链接阶段将多个二进制文件整合为可执行文件。

  • Windows平台的符号表信息存储在pdb文件中,便于调试。

  • pdb文件的使用减少了可执行文件的大小,提高了性能。

  • PE头的DIRECTORY_ENTRY_DEBUG节记录了pdb的地址。

  • 没有pdb时,函数入口地址变得无意义,增加逆向调试难度。

  • 符号表如同地图,帮助定位内存中的信息。

➡️

继续阅读