2012-06-11 17 views
1

簡明扼要:調試(勝):DIA與DBGHELP

什麼是DIA(調試接口訪問)之間以及DBGHELP庫的實際差異?我知道DIA是基於COM的,並且似乎非常強大(以及能夠與託管和非託管流程一起使用),而DBGHELP似乎使用起來非常方便,但提供的可能性較小。

任何人都可以解釋這兩個人有什麼區別,可以做什麼與一個但不與另一個?我真的找到在互聯網上:(充分一些確鑿信息掙扎

很抱歉,如果這似乎是一個平淡的問題,並感謝你對我有什麼答案!:)

問候 PuerNoctis

回答

2

DIA具有一致的基於COM的接口。 DbgHelp由一組標準C函數組成。

這裏,我已經寫了DIA(用C++樣本)兩大aricles,顯示DIA的功率:

  1. Symbols File Locator
  2. How to Inspect the Content of a Program Database (PDB) File

如果可能的話,使用DIA而不是DBGHELP因爲DIA可以被任何COM感知程序使用。

+0

謝謝你的鏈接!有趣的是:我幾分鐘前就已經看到了你的文章;)另一個問題:DIA是否可以用來調試非託管以及託管應用程序? – PuerNoctis

+0

歡迎您!如前所述,DIA基於COM,即非託管代碼。您當然可以使用網橋從託管應用程序中使用DIA。由於託管代碼包含完整的源代碼並且不使用PDB符號,因此我認爲它不適合調試託管應用程序。 – mox

+0

噢好吧。同時,我還發現了「CLR調試API」,它還提供COM接口來調試託管應用程序(圍繞ICorDebug接口)。再次感謝您的專業知識!現在我知道DIA和DBGHELP如何關聯:) – PuerNoctis

0

這是一回事。 DbgHelp是核心api,它可以從C中使用.DIA是一個COM對象模型,它使它更容易使用,並且使它可以從大多數任何語言訪問。它是調試接口訪問的縮寫,強調「訪問」。它的MSDN文檔starts here

+0

謝謝!是否存在值得一提的「主要」缺陷? – PuerNoctis

+0

您會首先將您遇到的任何問題視爲主要缺點。我無法猜測會發生什麼。 –

+0

好了,很公平,我覺得有道理:) – PuerNoctis