链接器生成的.map文件有什么用?

sha*_*oth 39 c++ linker visual-c++

当使用/ MAP参数或"生成映射文件"项目设置时,VC++链接器会产生.map文件的用途是什么?我什么时候需要它们?我如何从中受益?

Can*_*pus 32

关于如何使用地图文件查找崩溃的好文章.

http://www.codeproject.com/KB/debug/mapfile.aspx

手动完成这一切是非常无趣的.

我不知道有任何工具可以读取地图文件并帮助找到崩溃位置.如果有人知道请更新我们.


Jas*_*n S 15

对于嵌入式系统,地图文件更有用.(虽然你不会使用Visual C++;)

诸如了解程序/数据存储器的耗尽程度以及特定变量所在的位置等问题非常重要.


Den*_*nis 10

在分析.hdmp和.mdmp崩溃转储时,WinDBG使用.map和.pdb文件来帮助调试崩溃.

基本上,它们将内存地址映射到.exe(或.dll)中的函数和变量.一般非常有用.

编辑:调试"事后"崩溃的最有用的方法是使用WinDbg(Windows平台).打开它,打开崩溃转储.然后将源路径设置为指向代码(如果有),指向.map和.pdb的符号路径以及指向.exe的图像路径,并在命令行中键入"!analyze -v" .现在,您可以获得包含代码行和所有内容的完整堆栈跟踪.
如果路径中有MS符号服务器,并且打开了整页堆或adplus正在运行,那就更好了.看看我最喜欢的两个WinDbg资源:
第一站:: http://www.microsoft.com/whdc/devtools/debugging/debugstart.mspx
强制加载符号:: http://www.osronline.com/ShowThread. cfm?link = 182377
有用的网站::http://www.dumpanalysis.org/blog/index.php/category/windbg-tips-and-tricks/page/7/


Too*_*the 8

您很少需要它们,但它们可以方便地调试一些问题,因为它们提供有关函数和数据位置的信息.

例如:

  • 所有细分(代码,数据和其他)的详细信息.
  • 将行号链接到代码

您可以使用映射文件来调试工具.