2010-04-19 28 views
1

我已經儘可能告訴VC++在編譯期間生成ASM文件,這是我從未真正使用過的。但它似乎非常有限,就像它們只是編譯期間拋出的額外文件一樣。 我以爲ASM/C++代碼可能會被鏈接,所以我可以直接從C++跳轉到生成的ASM代碼?或者可以在ASM代碼中設置斷點? 這是可能的,我不知道這些工具,或者是離線分析的ASM代?瞭解VC++ ASM代

+1

這樣做會很困難,因爲C++和asm沒有1:1表示。 – 2010-04-19 14:29:35

+0

但編譯器確切知道它生成的代碼,並且應該能夠從C++ - > ASM進行映射。因此,如果PDB文件包含此數據,或者ASM代碼只是一個副產品,那麼問題就來了。 – 2010-04-19 14:34:54

回答

2

編譯器生成的彙編語言文件主要用於離線分析。如果你想在生成的彙編代碼中設置一個斷點,你可以這樣做。當您打開相應的源文件時,右鍵單擊並選擇「轉到反彙編」。這將向您展示彙編語言代碼,並將源語句交織爲註釋(就像它單獨生成的文件一樣)。然後,可以對從任何特定源語句生成的單個彙編語言語句設置斷點。

+0

儘管這隻能在調試模式下正常工作,但生成的程序集幾乎不像在發行版中那樣具有教育意義。 http://stackoverflow.com/questions/563000/can-optimizations-affect-the-ability-to-debug-a-vc-app-using-its-pdb – 2010-04-19 15:53:30

+1

@BlueRaja:是的,沒有。只要你在發佈模式下生成調試信息,你仍然可以做大致相同的事情。不同之處在於全局優化可以重新排列代碼,因此您不再在源代碼和它生成的內容之間獲得1:1的對應關係。 – 2010-04-19 16:12:39