{"id":1276,"date":"2018-05-21T22:50:45","date_gmt":"2018-05-21T14:50:45","guid":{"rendered":"https:\/\/damogame.cn:15443\/wordpress\/?p=1276"},"modified":"2018-05-21T22:50:45","modified_gmt":"2018-05-21T14:50:45","slug":"%e5%88%a9%e7%94%a8vs2005%e8%bf%9b%e8%a1%8cdump%e6%96%87%e4%bb%b6%e8%b0%83%e8%af%95","status":"publish","type":"post","link":"https:\/\/i007.cc\/wordpress\/archives\/1276","title":{"rendered":"\u5229\u7528VS2005\u8fdb\u884cdump\u6587\u4ef6\u8c03\u8bd5"},"content":{"rendered":"<h2><a href=\"http:\/\/www.cppblog.com\/woaidongmao\/archive\/2009\/10\/21\/99135.html\">\u5229\u7528VS2005\u8fdb\u884cdump\u6587\u4ef6\u8c03\u8bd5<\/a><\/h2>\n<p>\u524d\u8a00\uff1a\u5229\u7528drwtsn32\u6216NTSD\u8fdb\u884c\u7a0b\u5e8f\u5d29\u6e83\u5904\u7406\uff0c\u90fd\u53ef\u4ee5\u751f\u6210\u53ef\u7528\u4e8e\u8c03\u8bd5\u7684dmp\u683c\u5f0f\u6587\u4ef6\u3002\u4f7f\u7528VS2005\u6253\u5f00\u751f\u6210\u7684DMP\u6587\u4ef6\uff0c\u80fd\u5f88\u65b9\u4fbf\u7684\u627e\u51faBUG\u6240\u5728\u4f4d\u7f6e\u3002\u672c\u6587\u5c06\u8ba8\u8bba\u4ee5\u4e0b\u5185\u5bb9\uff1a<\/p>\n<p>1\u3001\u00a0\u00a0\u7a0b\u5e8f\u7f16\u8bd1\u9009\u9879<\/p>\n<p>2\u3001\u00a0\u00a0\u5229\u7528VS2005\u00a0\u5206\u6790dump\u6587\u4ef6<\/p>\n<p>3\u3001\u00a0\u00a0\u5e38\u89c1\u95ee\u9898\u8ba8\u8bba<\/p>\n<p><strong>\u4e00\u3001<\/strong><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/strong><strong>\u7a0b\u5e8f\u7f16\u8bd1\u9009\u9879<\/strong><\/p>\n<p>PDB files contains all debug information like type definition and function prototype.\u00a0When application crashes, we need the PDB files to analyze the root cause, so make sure these PDB files will be created when building it.\u00a0You must do the following setting:<\/p>\n<p>C\/C++\\General\\Debug Information Format=Program Database (\/Zi).<\/p>\n<p>\u56fe1.1\u00a0\u8c03\u8bd5\u4fe1\u606f\u683c\u5f0f<\/p>\n<p>Linker\\Debugging\\Generate Program Database File=\u201dName and location of your PDB files\u201d<\/p>\n<p>\u56fe1.2 PDB\u6587\u4ef6\u8f93\u51fa\u8def\u5f84<\/p>\n<p>PDB\u6587\u4ef6\u8def\u5f84\u6700\u597d\u8bbe\u7f6e\u5728\u540c\u4e00\u4e2a\u6587\u4ef6\u5939\u4e2d\uff0c\u8fd9\u6837\u65b9\u4fbfdmp\u6587\u4ef6\u8c03\u8bd5\u65f6\u8c03\u7528\u3002<\/p>\n<p>\u8c03\u8bd5\u65f6\uff0c\u6240\u6709\u7684PDB\u6587\u4ef6\u548c\u6e90\u6587\u4ef6\u5fc5\u987b\u4e25\u683c\u5339\u914d\uff08the PDB files\u00a0<strong>should be<\/strong>\u00a0the one generated by build the source code\uff09\uff0c\u5e76\u5b58\u50a8\u5728\u4e00\u4e2a\u5b89\u5168\u7684\u4f4d\u7f6e\u3002\u5f53\u5ba2\u6237\u62a5\u544a\u4e86\u4e00\u4e2a\u9519\u8bef\u65f6\uff0c\u4f60\u9700\u8981\u8fd9\u4e9b\u6587\u4ef6\u6765\u5e2e\u5fd9\u4ee5\u4fbf\u5b9a\u4f4d\u9519\u8bef\u4e8e\u6e90\u4ee3\u7801\u4e2d\u5e76\u89e3\u51b3\u95ee\u9898\u3002<\/p>\n<p><strong>\u4e8c\u3001<\/strong><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/strong><strong>VS2005\u00a0<\/strong><strong>\u5206\u6790dump\u6587\u4ef6<\/strong><\/p>\n<p>In this simple application, there is an unhandled Access Violation Reading exception, because GetNameFromDatabase returns a NULL pointer, and this pointer is passed into IsPrefix and then it\u2019s used directly without NULL pointer checking.<\/p>\n<p>\u56fe1.3\u00a0\u6f14\u793a\u4ee3\u7801<\/p>\n<p>&nbsp;<\/p>\n<p>\u5229\u7528Release\u6a21\u5f0f\u7f16\u8bd1\u8be5\u6d4b\u8bd5\u7a0b\u5e8f\uff0c\u5728\u5ba2\u6237\u673a\u4e0a\u8fd0\u884c\u8be5\u7a0b\u5e8f\uff0c\u5c06\u6839\u636eNTSD\u8bbe\u7f6e\u751f\u6210\u76f8\u5bf9\u5e94\u7684DMP\u683c\u5f0f\u6587\u4ef6\u3002<\/p>\n<p>\u53ef\u4ee5\u4f7f\u7528Visual Studio.Net\u3001NTSD\u6216\u662f\u5176\u4ed6\u7684\u8c03\u8bd5\u5de5\u5177\u5bf9DMP\u683c\u5f0f\u6587\u4ef6\u8fdb\u884c\u5206\u6790\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>l\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Start Visual Studio.Net<\/p>\n<p>Click File\\Open Solution and make sure the files of type is *.dmp then click Open.<\/p>\n<p>\u56fe1.3\u00a0Open Dump File (GUI)<\/p>\n<p>&nbsp;<\/p>\n<p>l\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Set Symbol Path<\/p>\n<p>Click Tools\\Options, Debugging\\Symbols\uff0c\u589e\u52a0PDB\u6587\u4ef6\u8def\u5f84\u3002\u82e5\u8c03\u8bd5\u7684\u7a0b\u5e8f\u9700\u8981\u5fae\u8f6f\u57fa\u7840\u5e93\u7684PDB\u4fe1\u606f\uff0c\u53ef\u4ee5\u589e\u52a0\u4e00\u4e2a\u8def\u5f84\u4e3a\uff1a<\/p>\n<p><a href=\"http:\/\/msdl.microsoft.com\/download\/symbols\">http:\/\/msdl.microsoft.com\/download\/symbols<\/a><\/p>\n<p>\u5728\u754c\u9762\u4e0b\u65b9Cache Symbol From symbol\u2026\u9009\u62e9\u672c\u5730\u5b58\u50a8\u8fd9\u4e9bSymbols\u7684\u8def\u5f84\u3002<\/p>\n<p>\u56fe1.4 Symbol Path<\/p>\n<p>\u5982\u679cDMP\u6587\u4ef6\u6ca1\u6709\u653e\u5165\u672c\u8eabPDB\u6587\u4ef6\u6240\u5728\u76ee\u5f55\uff0c\u4e5f\u53ef\u4ee5\u5728\u6b64\u5904\u589e\u52a0\u4e00\u4e2a\u672c\u5730\u76ee\u5f55\u3002\u70b9OK\u540e\uff0cVS2005\u5c06\u4ece\u7f51\u7edc\u4e2d\u4e0b\u8f7d\u6240\u9700\u8981\u7684Symbols\uff0c\u9700\u8981\u7b49\u5f85\u4e00\u6bb5\u65f6\u95f4\u3002\u5982\u679c\u662f\u591a\u6b21\u8c03\u8bd5\u540c\u4e00\u4e2a\u7a0b\u5e8f\u9519\u8bef\u6240\u751f\u6210\u7684DMP\u6587\u4ef6\uff0c\u53ef\u4ee5\u5728\u5bf9\u8bdd\u6846\u4e2d\u9009\u62e9\u201cSearch the above locations only when symbols are loaded manually\u201d\u3002\u4ece\u800c\u53ef\u4ee5\u8282\u7701\u7f51\u7edc\u5e26\u5bbd\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>l\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Set Source code path<\/p>\n<p>Open Solution Property Pages and set the source code path.<\/p>\n<p>\u56fe1.5\u00a0\u5c5e\u6027\u83dc\u5355<\/p>\n<p>\u56fe1.6 Debug Source Files<\/p>\n<p>&nbsp;<\/p>\n<p>l\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Start to Debug the Dump File<\/p>\n<p>Click the Debug menu, it will ask you to save as a solution, save it. Then it will go to the line which caused the crash of your application.<\/p>\n<p>\u56fe1.7\u00a0\u8c03\u8bd5\u7a97\u53e3\uff0c\u5b9a\u4f4d\u5230\u6e90\u4ee3\u7801<\/p>\n<p>&nbsp;<\/p>\n<p><strong>\u4e09\u3001<\/strong><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/strong><strong>\u5e38\u89c1\u95ee\u9898\u8ba8\u8bba<\/strong><\/p>\n<p>1\u3001\u00a0 Dump\u6587\u4ef6\u653e\u5728\u54ea\u91cc\uff1f<\/p>\n<p>Dump\u6587\u4ef6\u4e0d\u7528\u975e\u8981\u653e\u5728\u4f60\u7f16\u8bd1\u51fa\u6765\u7684\u4f4d\u7f6e\uff0c\u4f60\u5b8c\u5168\u53ef\u4ee5\u5efa\u7acb\u4e00\u4e2a\u65b0\u7684\u6587\u4ef6\u5939\u6765\u653e\u5b83\u3002\u4f46\u82e5\u4e0d\u662f\u5b58\u653e\u5728\u7f16\u8bd1\u51fa\u6765\u7684\u4f4d\u7f6e\uff0c\u9700\u8981\u5c06\u7f16\u8bd1\u751f\u6210\u7684PDB\u6587\u4ef6\u62f7\u8d1d\u5230Dump\u6587\u4ef6\u76ee\u5f55\uff0c\u6216\u662f\u5229\u7528VS2005\u6253\u5f00Dump\u6587\u4ef6\u540e\uff0c\u8bbe\u7f6ePDB\u6587\u4ef6\u8def\u5f84\u3002\u53c2\u7167\u56fe1.4\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>2\u3001\u00a0\u00a0\u5982\u4f55\u6062\u590d\u5f53\u65f6\u7684\u73b0\u573a\uff1f<\/p>\n<p>\u53ef\u80fd\u4f60\u8981\u95ee\uff0c\u600e\u4e48\u53ef\u80fd\uff0c\u8fd9\u4e2adump\u6587\u4ef6\u53ef\u662f\u7528\u6237\u53d1\u7ed9\u6211\u7684\uff0c\u6211\u4e0d\u53ef\u80fd\u53bb\u7528\u6237\u5bb6\u91cc\u8c03\u8bd5\u5427\uff1f\u8fd9\u4e2a\u6062\u590d\u73b0\u573a\u53ef\u4e0d\u662f\u6307\u7684\u975e\u8981\u5230\u90a3\u53f0\u673a\u5668\u4e0a\u53bb\uff0c\u800c\u662f\u8981\u628a\u4ea7\u751fdump\u6587\u4ef6\u5bf9\u5e94\u7684\u4e8c\u8fdb\u5236\u6587\u4ef6\u62ff\u5230\u3002<\/p>\n<p>\u4f46\u662f\u6062\u590d\u73b0\u573a\u9700\u8981\u6240\u6709\u7684\u4e8c\u8fdb\u5236\u6587\u4ef6\u90fd\u8981\u5bf9\u5e94\uff0c\u4f60\u4e00\u5b9a\u8981\u6709\u5bfc\u81f4\u7528\u6237\u5d29\u6e83\u7684\u90a3\u4e9bExe\u548cDLL\u3002\u65e2\u7136\u662f\u4f60\u53d1\u5e03\u7684\u7a0b\u5e8f\uff0cExe\u6587\u4ef6\u5f53\u7136\u4f60\u4f1a\u6709\u3002\u6240\u4ee5\u8fd9\u91cc\u53ea\u8003\u8651DLL\u5c31\u884c\u4e86\u3002<\/p>\n<p>Dump\u6587\u4ef6\u4e2d\u8bb0\u5f55\u4e86\u6240\u6709DLL\u6587\u4ef6\u7684\u7248\u672c\u53f7\u548c\u65f6\u95f4\u6233\uff0c\u6240\u4ee5\u4f60\u4e00\u5b9a\u53ef\u4ee5\u540c\u8fc7\u67d0\u79cd\u9014\u5f84\u62ff\u5230\u5b83\u3002\u5982\u679c\u4f60\u80fd\u4ece\u7528\u6237\u90a3\u91cc\u62ff\u5230\u6700\u597d\uff0c\u5982\u679c\u4e0d\u65b9\u4fbf\uff0c\u7528\u6237\u4e0d\u53ef\u80fd\u7528\u7684\u662f\u6211\u4eec\u5e73\u5e38\u4e0d\u5e38\u7528\u7684\u64cd\u4f5c\u7cfb\u7edf\uff0c\u6240\u4ee5\u627e\u4e2a\u6709\u5bf9\u5e94\u7cfb\u7edf\u7684\u673a\u5668\u4e00\u822c\u90fd\u4f1a\u6709\u3002\u4f46\u662f\u8bb0\u4f4f\u4e0d\u4ec5\u662f\u6587\u4ef6\u540d\u79f0\u8981\u4e00\u81f4\uff0c\u8fd8\u8981\u6838\u5bf9\u7248\u672c\u548c\u65f6\u95f4\u6233\uff0c\u5982\u679c\u4e0d\u540c\u4e00\u6837\u6ca1\u6709\u529e\u6cd5\u7528\u3002<\/p>\n<p>\u5982\u679c\u5ba2\u6237\u7528\u4e86\u67d0\u4e2a\u7279\u6b8a\u7684\u8865\u4e01\u600e\u4e48\u529e\uff1f<\/p>\n<p>\u5176\u5b9e\u8fd9\u4e2a\u95ee\u9898\u4e5f\u5f88\u597d\u89e3\u51b3\uff0c\u53ea\u8981\u5b83\u4e0d\u963b\u788d\u9605\u8bfb\u5806\u6808\uff0c\u5c31\u4e0d\u7528\u7ba1\u5b83\uff0c\u8c03\u8bd5Dump\u548c\u8fd0\u884c\u7a0b\u5e8f\u4e0d\u4e00\u6837\uff0c\u7f3a\u5c11\u4e00\u4e24\u4e2aDLL\u6ca1\u6709\u4efb\u4f55\u95ee\u9898\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>3\u3001\u00a0\u00a0\u5982\u679c\u771f\u7684\u9700\u8981\u600e\u4e48\u529e\uff1f<\/p>\n<p>\u7b26\u53f7\u6587\u4ef6\u73b0\u5728\u4e3b\u8981\u662f\u6307PDB\u6587\u4ef6\u3002<\/p>\n<p>\u5982\u679c\u6ca1\u6709\u7b26\u53f7\u6587\u4ef6\uff0c\u90a3\u4e48\u8c03\u8bd5\u7684\u65f6\u5019\u53ef\u80fd\u5bfc\u81f4\u5806\u6808\u9519\u8bef\u3002<\/p>\n<p>\u5982\u679c\u4f60\u4e22\u5931\u4e86\u8fd9\u4e2a\u53d1\u5e03\u7248\u672c\u4e2d\u4f60\u7f16\u8bd1\u51fa\u6765\u7684\u90a3\u4e9bexe\u548cDLL\u7684PDB\uff0c\u90a3\u4e48\u8fd9\u4e2a\u635f\u5931\u662f\u4e25\u91cd\u7684\uff0c\u91cd\u65b0\u7f16\u8bd1\u51fa\u6765\u7684\u7248\u672c\u662f\u4e0d\u80fd\u4f7f\u7528\u7684\u3002<\/p>\n<p>\u6211\u81ea\u5df1\u7684DLL\u90fd\u6709\u4e86\uff0c\u53ef\u662f\u7f3a\u7684\u662f\u7cfb\u7edf\u7684DLL\u7684\u5bf9\u5e94PDB\u6587\u4ef6\u600e\u4e48\u529e\uff1f\u56fe1.4\u4e2d\u5df2\u7ecf\u4ecb\u7ecd\u4e86\u65b9\u6cd5\u3002\u5fae\u8f6f\u5728\u5b83\u7684\u7b26\u53f7\u6570\u636e\u5e93\u4e0a\u4e3a\u6211\u4eec\u63d0\u4f9b\u4e86\u6240\u6709\u7684PDB\u6587\u4ef6\uff0c\u8fd8\u6709\u90e8\u5206\u975e\u5173\u952eDLL\u3002\u8bbe\u7f6e\u597d\u540e\u7a0b\u5e8f\u5c06\u81ea\u52a8\u4e0b\u8f7d\u9700\u8981\u7684PDB\u53caDLL\u6587\u4ef6\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>4\u3001\u00a0\u00a0\u62ff\u5230\u9700\u8981\u7684\u6587\u4ef6\u4e86\uff0c\u8fd9\u4e9b\u6587\u4ef6\u5e94\u8be5\u653e\u5728\u54ea\u91cc\uff1f<\/p>\n<p>\u7b26\u53f7\u6570\u636e\u5e93\u4e2d\u7684\u6587\u4ef6\u4e0d\u7528\u52a8\uff0c\u628a\u5176\u5b83\u7684exe\u548cDLL\u3001PDB\u6587\u4ef6\u653e\u5728dump\u6587\u4ef6\u76ee\u5f55\u91cc\u5c31\u884c\u4e86\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>5\u3001\u00a0\u00a0\u6211\u7528\u7684\u662fVS2005\uff0c\u660e\u660e\u6709\u6e90\u4ee3\u7801\uff0c\u4e3a\u4ec0\u4e48\u663e\u793a\u4e0d\u4e86\uff1f<\/p>\n<p>\u8fd9\u4e2a\u662fdump\u8c03\u8bd5\u7684\u6700\u5934\u75db\u95ee\u9898\uff0c\u4ee3\u7801\u53ef\u80fd\u5df2\u7ecf\u6539\u8fc7\u4e86\uff0c\u5373\u4f7f\u4f60\u4eceSVN\u62ff\u5230\u5f53\u65f6\u7684\u7248\u672c\uff0c\u65f6\u95f4\u6233\u4e5f\u662f\u9519\u7684\uff0cVS2005\u5c31\u662f\u4e0d\u8ba9\u4f60\u663e\u793a\u4ee3\u7801\u3002\u5176\u5b9e\u53ea\u8981\u5728<\/p>\n<p>Tools\\Options\uff0cDebugging\\General\u4e2d\u53bb\u6389<\/p>\n<p>Require source files to exactly match the original version\u7684\u590d\u9009\u5c31\u884c\u4e86\u3002<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5229\u7528VS2005\u8fdb\u884cdump\u6587\u4ef6\u8c03\u8bd5 \u524d<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[],"tags":[118],"class_list":["post-1276","post","type-post","status-publish","format-standard","hentry","tag-02-"],"_links":{"self":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/1276","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/comments?post=1276"}],"version-history":[{"count":0,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/1276\/revisions"}],"wp:attachment":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/media?parent=1276"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/categories?post=1276"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/tags?post=1276"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}