进程访问文件时进入调试器,或从进程获取文件访问的调用堆栈

时间:2010-09-05 01:23:47

标签: c++ debugging com-interop

我正在处理几十万行代码,而且我很难过这个进程访问特定文件的地方。我已经放弃了搜索代码,我只是找不到。

所以,我在这里 - 问一个问题,我几乎可以肯定没有简单的解决方案。

我已经尝试过来自SysInternals的FileMon,ProcMon,虽然我可以看到该文件被访问过,但它并没有显示调用堆栈或任何有用的信息。

我希望在发生这种情况时可以进入调试器;我想也许我可以为FileMon编写一些扩展,当访问发生时会向我发出信号,然后我可以将Debug.Break抛入我的进程。

任何洞察力或想法都受到赞赏。

2 个答案:

答案 0 :(得分:1)

在CreateFile()上设置断点。在main()中写一个,这样您就可以轻松地在其中找到API入口点。在单步执行之前切换到反汇编视图。

答案 1 :(得分:0)

该程序是创建该文件还是预先存在?如果您在磁盘上重命名文件会发生什么,也许这可以帮助您获得堆栈跟踪?如果它是由程序生成的,文件名是否符合特定模式,那么您可以查找填充此模式的格式字符串,例如“c:\%d-%d-%d.txt”,然后查找使用此字符串的行。