Отладка DLL моей Windows, которая может быть вызвана из службы Windows

У меня есть DLL-файл агента расширения SNMP, который вызывается службой SNMP Windows (snmp.exe) каждый раз, когда я выполняю snmpwalk (другое консольное приложение). Я хочу войти в свой код DLL, который вызывается из вышеупомянутой службы Windows. Как мне это сделать?

Спасибо, Сом.


person Community    schedule 21.01.2009    source источник


Ответы (2)


Обычно вы подключаете свой отладчик к работающему процессу, который использует вашу DLL, а затем взаимодействуете с отладчиком, как обычно.

В Visual Studio 2008 это можно сделать, выбрав Отладка > Присоединить к процессу, а затем выбрать правильный процесс. По крайней мере, я смутно помню, как делал это раньше.

person Timo Geusch    schedule 21.01.2009
comment
Привет, спасибо за ответ, но в этом случае у меня НЕТ ни исходного кода, ни решения для процесса (который на самом деле является стандартной службой SNMP Windows), из которого вызывается моя DLL, я не хочу иметь исходный код для консоли приложение, которое вызывает службу SNMP - person ; 21.01.2009
comment
Как указывает Дмитрий Матвеев, вам не нужен исходный код приложения, использующего вашу DLL, но вы все равно сможете увидеть исходный код и переменные в вашей DLL, но не за ее пределами. - person Timo Geusch; 21.01.2009

Вы можете подключиться к работающему сервису из визуальной студии, как предлагает Тимо Гойш. После этого вы можете установить точку останова в своем коде. Вы также можете добавить вызов функции DebugBreak в место, где вы хотите отлаживать свою библиотеку. Это может помочь вам, если код, который вы хотите отладить, выполняется до того, как вы сможете подключиться к процессу (например, если ваш код выполняется в обработчике события запуска службы).

РЕДАКТИРОВАТЬ: вы можете подключиться к любой службе, даже если у вас нет отладочной информации для нее, но в этом случае вы не сможете увидеть трассировку стека над вызовом функции.

person okutane    schedule 21.01.2009