C++ 文件修改或文件打开时的断点

C++ 文件修改或文件打开时的断点,c++,visual-studio,debugging,visual-studio-2005,filesystems,C++,Visual Studio,Debugging,Visual Studio 2005,Filesystems,我想在修改特定文件或打开特定文件时设置断点。这是一个文件,我们的软件会在遗留代码部分打开和修改它。我不太清楚如何解决这个问题。我考虑过的一种方法是找到打开文件的所有位置,对所有位置进行中断,然后检查文件路径以确定它是否是我们关心的路径。我考虑的另一种方法是,当路径与我所关心的匹配时,尝试在文件系统打开代码中设置一个断点(可能更困难,因为我目前在Windows下运行。这可能是Linux下的一个选项,但Visual Studio 2005解决方案是理想的,Linux解决方案可能有用) 目前,我正在使

我想在修改特定文件或打开特定文件时设置断点。这是一个文件,我们的软件会在遗留代码部分打开和修改它。我不太清楚如何解决这个问题。我考虑过的一种方法是找到打开文件的所有位置,对所有位置进行中断,然后检查文件路径以确定它是否是我们关心的路径。我考虑的另一种方法是,当路径与我所关心的匹配时,尝试在文件系统打开代码中设置一个断点(可能更困难,因为我目前在Windows下运行。这可能是Linux下的一个选项,但Visual Studio 2005解决方案是理想的,Linux解决方案可能有用)

目前,我正在使用Visual Studio 2005来开发我的C++软件项目。我在网上找不到任何关于这方面的信息,也找不到人们愿意采取的一种选择或方法

通常情况下,我会说我应该知道这个文件是在哪里打开的。不幸的是,这段代码很难理解,并且将被重新分解,但是在不久的将来,这个功能将对我有所帮助

非常感谢您阅读我的问题


-Brian J.Stinar-

将条件断点放在kernel32.CreateFileW并检查文件名。
然后您将获得文件句柄,这样您就可以将条件断点放在kernel32.CreateFileW并检查文件句柄


您还可以钩住CreateFileW并在其中调用_debugbreak()。

将条件断点放在kernel32.CreateFileW并检查文件名。
然后您将获得文件句柄,这样您就可以将条件断点放在kernel32.CreateFileW并检查文件句柄


您还可以钩住CreateFileW并在其中调用_debugbreak()。

我不能100%确定VS2005是否可以实现以下功能(08和10都可以),但无论如何,当遇到某些特殊情况时,可以使断点“触发”中断(例如,当for循环中的计数器命中某个想要的值时,因此循环被挂起在其第n个循环中)…希望我能用我的英语解释一下:D…我不能100%确定VS2005是否可以做到以下几点(08和10是),但无论如何:可以使断点“触发”当某个特殊条件被命中时的中断(例如,当for循环中的计数器命中某个想要的值,因此循环挂起在其第n个循环中)…希望我能用我的英语以某种方式理解它:D…我理解你在概念层面上所说的,但我不确定如何将kernel32.CreateFileW断点放进去。你对此有任何其他信息吗?非常感谢。@Brian Stinar:只需在breapoints窗口中手动添加它,使用“CreateFileW”作为函数名。我理解你在概念层面上所说的,但我不确定如何将kernel32.CreateFileW断点放进去。你有关于这方面的其他信息吗?非常感谢。@Brian Stinar:只需在breapoints窗口中手动添加它,使用“CreateFileW”作为函数名。