lm命令中的“导出符号"是什么意思 [英] What does 'exported symbols' mean in lm command

查看:29
本文介绍了lm命令中的“导出符号"是什么意思的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

048c0000 0550c000 Db(导出符号)Db.dll05520000 05535000 Graph(导出符号)Graph.dll

我原以为它会说符号未加载、加载或延迟,但事实并非如此.在这种情况下,(导出符号)表示什么?

解决方案

导出的符号意味着没有加载 PDB 文件,而是从二进制文件(EXE、DLL)中读取符号.二进制文件有一个导出表.此表用于解析符号.

导出表是PE文件格式的一个特点.如果你想看,你可以使用

关于信息量,它是按这个顺序增加的:

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

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

I am in debugger session with WinDbg. I type lm command and it shows loaded modules but I don't quite understand what does the (export symbols) mean below?

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

I was expecting it will either say symbols not loaded or loaded or deferred but it's none of that. What does the (export symbols) indicate in this case?

解决方案

Exported symbols means that no PDB file was loaded and the symbols have been read from the binary (EXE, DLL) instead. A binary file has an export table. This table is used for resolving the symbols.

The export table is a feature of the PE file format. If you want to see it, you can use CFF Explorer. If you want a sample binary, use ntdll.dll from %windir%\system32:

Regarding the amount of information, it increases in this order:

  • no symbols
  • export symbols
  • public symbols
  • private symbols

You may also see "deferred" symbols, which means that WinDbg doesn't know yet, because it has not tried loading them. Use ld*;.reload if you want to get rid of the deferred symbols.

这篇关于lm命令中的“导出符号"是什么意思的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆