2012-06-11 4 views
1

Короткий и лаконичный:Debugging (Win): DIA против DBGHELP

Каковы реальные различия между DIA (Debug Interface Access) и библиотеки DBGHELP? Я знаю, что DIA основана на COM и, кажется, очень мощна (а также может использоваться с управляемыми и неуправляемыми процессами), тогда как DBGHELP, кажется, очень удобен в использовании, но предлагает меньше возможностей.

Может ли кто-нибудь объяснить, где эти два имеют свои отличия и что можно сделать с одним, но не с другим? Я действительно борюсь с поиском какой-то полная неоспоримой информации в интернете :(

Извините, если это кажется скучным вопрос, и благодаря любым ответам у вас есть для меня! :)

С уважением PuerNoctis

ответ

2

DIA имеет последовательный интерфейс на основе COM. DbgHelp состоит из набора стандартных функций C.

Вот два Статей я написал о DIA (с образцами C++), который показывает силу DIA:

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

Когда это возможно, использовать АСВ и не DbgHelp , поскольку DIA может использоваться любой программой, поддерживающей COM.

+0

Спасибо за ссылки! Смешная вещь: я уже несколько минут назад заглянул в ваши статьи;) Еще один вопрос: правда ли, что DIA может использоваться для отладки неуправляемых, а также управляемых приложений? – PuerNoctis

+0

Добро пожаловать! Как уже упоминалось, DIA основана на COM, что означает неуправляемый код. Конечно, вы можете использовать мосты для использования DIA из управляемого приложения.Поскольку управляемый код включает полный исходный код и не использует символы PDB, я не думаю, что он подходит для отладки управляемых приложений. – mox

+0

О, ладно. Я также нашел «CLR Debugging API», который также предоставляет COM-интерфейсы для отладки управляемого приложения (вокруг интерфейсов ICorDebug). Еще раз спасибо за ваш опыт! Теперь я знаю, как DIA и DBGHELP коррелируют :) – PuerNoctis

0

Это то же самое. DbgHelp является основным api, он можно использовать с C. DIA - это объектная модель COM поверх нее, которая просто упрощает ее использование и делает доступной с любого языка. Это аббревиатура для доступа к интерфейсу отладки, акцент на «Доступ». Документация MSDN для него starts here.

+0

Спасибо! Существуют ли «основные» недостатки от одного к другому, которые стоит упомянуть? – PuerNoctis

+0

Вы поймете, в чем проблема, с которой вы столкнетесь сначала, как главный недостаток. Я не могу догадаться, что это будет. –

+0

Хорошо, я думаю, что это имеет смысл :) – PuerNoctis