Получить callstack (s) при вызове функции kernel32.dll - PullRequest
1 голос
/ 27 сентября 2010

У меня есть процесс, который меняет свой текущий каталог, и я хотел бы знать, когда и где это происходит. Как я мог это сделать?

Я попытался установить точку останова в SetCurrentDirectoryA / SetCurrentDirectoryW в Visual Studio, но она не работает.

Ответы [ 3 ]

2 голосов
/ 28 сентября 2010

Вы отлаживаете одну из своих программ или программу, для которой у вас нет исходного кода? Отладчик Visual Studio не очень дружелюбен в отношении отладки приложений без исходного кода; в этом случае я бы порекомендовал WinDbg или OllyDbg - или даже пропустить отладчик и написать инструментальный регистратор, используя EasyHook .

EDIT:

Попробуйте установить точку останова на {,,kernel32.dll}_SetCurrentDirectoryA@4 - своеобразный синтаксис и требуются декорированные имена. Сам не пробовал, но нашел здесь . Ключевые слова Google: " Visual Studio точка останова API ":)

0 голосов
/ 28 сентября 2010

Ваша программа может изменять каталоги с помощью функций msvcrt.Вам также следует попробовать установить точки останова на следующие функции:

_chdir
_chdrive
0 голосов
/ 27 сентября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...