聊一聊 .NET高级调试 中必知的符号表
💡
原文中文,约4600字,阅读约需11分钟。
📝
内容提要
本文介绍了程序编译的四个阶段:预处理、编译、汇编和链接。在Windows平台上还介绍了pdb文件解析和符号表的作用和使用。
🎯
关键要点
-
符号表记录程序的生物特征,辅助可视化调试。
-
程序编译分为四个阶段:预处理、编译、汇编和链接。
-
预处理阶段整合代码,处理 #include 和 #define。
-
编译阶段将C代码编译成汇编代码,提供辅助信息。
-
汇编阶段将汇编代码转成机器代码,生成二进制文件和符号表。
-
链接阶段将多个二进制文件整合为可执行文件。
-
Windows平台的符号表信息存储在pdb文件中,便于调试。
-
pdb文件的使用减少了可执行文件的大小,提高了性能。
-
PE头的DIRECTORY_ENTRY_DEBUG节记录了pdb的地址。
-
没有pdb时,函数入口地址变得无意义,增加逆向调试难度。
-
符号表如同地图,帮助定位内存中的信息。
➡️