'exported symbols' 在 lm 命令中是什么意思

What does 'exported symbols' mean in lm command

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

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

我原以为它会说符号未加载或加载或延迟,但它是 none。在这种情况下,(导出符号)表示什么?

导出的符号表示没有加载 PDB 文件,而是从二进制文件(EXE、DLL)中读取符号。一个二进制文件有一个导出 table。这个table是用来解析符号的。

导出table是PE文件格式的一个特性。想看的话可以用CFF Explorer。如果您想要示例二进制文件,请使用 %windir%\system32:

中的 ntdll.dll

关于信息量,按顺序递增:

  • 没有符号
  • 导出符号
  • public 符号
  • 私有符号

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