DbgEng - получить вывод команды не через обратные вызовы

0

Я делаю автономное приложение deubugger с помощью Microsoft DbgEng. Я хочу открыть второй поток, который отправляет команды на дополнительный экземпляр IDebugControl, и я хочу получить конкретный вывод для этого метода вызова IDebugControl Execute (и отправить его через tcp-соединение).

У меня проблема, так как IDebugControl из основного потока также отправляет команды в Execute(), и выходы могут быть смешаны. Мне нужен второй поток, потому что как только он выполнит команду типа "g" (go), она вызовет WaitForEvent(), и я не смогу получить дополнительную информацию о цели до тех пор, пока не произойдет событие.

Мне нужно решение для этого.

Второй IDebugControl используется для операций, отправляющих запросы только для данных, таких как строки разборки, дампа памяти... Интересно, могу ли я сделать второй IDebugClient и прикрепить его к уже открытому отлаживаемому процессу, а затем проблема решена, потому что я может поставить на него другие обратные вызовы.

Есть ли решение для меня?

Теги:
multithreading
windbg

1 ответ

1

Я думаю, вы не должны вызывать какую-либо команду для отладки двигателя, пока он ждет событий, кроме IDebugControl :: SetInterrupt.

Если вы хотите использовать два потока в любом случае, вы можете зарегистрировать интерфейс обратного вызова IDebugOutputCallbacks и обработать выходные данные любым мьютексом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню