lm命令中“导出符号”的含义是什么

时间:2016-06-29 18:30:12

标签: windbg

我正在使用WinDbg进行调试器会话。我键入lm命令,它显示已加载的模块,但我不太明白(导出符号)在下面是什么意思?

048c0000 0550c000   Db         (export symbols)       Db.dll
05520000 05535000   Graph      (export symbols)       Graph.dll

我原以为它会说符号没有加载或加载或延迟,但它不是那个。在这种情况下(出口符号)表示什么?

1 个答案:

答案 0 :(得分:3)

导出的符号表示没有加载PDB文件,而是从二进制文件(EXE,DLL)读取符号。二进制文件具有导出表。该表用于解析符号。

导出表是PE文件格式的一项功能。如果您想查看它,可以使用CFF Explorer。如果您需要样本二进制文件,请使用ntdll.dll中的%windir%\system32

Export table of NTDLL

关于信息量,它按此顺序增加:

  • 没有符号
  • 导出符号
  • 公共符号
  • 私人符号

您可能还会看到“延迟”符号,这意味着WinDbg还不知道,因为它还没有尝试加载它们。如果您想要删除延迟符号,请使用ld*;.reload