调用kernel32.dll函数时获取callstack

时间:2010-09-27 15:01:17

标签: windows debugging

我有一个更改其当前目录的进程,我想知道它发生的时间和地点。我怎么能这样做?

我尝试使用Visual Studio在SetCurrentDirectoryA / SetCurrentDirectoryW中设置断点,但它不起作用。

3 个答案:

答案 0 :(得分:2)

您是在调试自己的某个程序,还是没有源代码的程序? Visual Studio调试器在调试无源应用程序方面不是很友好;在这种情况下,我建议WinDbgOllyDbg - 甚至跳过调试器并使用EasyHook编写一个检测记录器。

编辑:

尝试在{,,kernel32.dll}_SetCurrentDirectoryA@4处设置断点 - 特殊语法并需要修饰名称。我自己没试过,但发现它here。 Google关键字:“ visual studio breakpoint api ”:)

答案 1 :(得分:0)

您需要使用本机代码附加/调试该过程。如果您错误地使用托管代码进行调试,则不会遇到这些断点。

答案 2 :(得分:0)

您的程序可能正在使用msvcrt函数更改目录。 您应该尝试在这些函数上放置断点:

_chdir
_chdrive
相关问题