我发现了自己的软件,会在桌面创建一个 1.txt 文件,但是我不知道是哪个代码创建的,那么如何进行快速的调试找到是哪个代码创建的
最简单的方法是使用 VisualStudio 全局搜 1.txt
看是否存在,但是这个方法存在两个问题,一个问题是可能这个文件名是拼出来的,如下面代码
for (int i = 1; i < 2; i++)
{
var file = $"{i}.txt";
}
这样就无法通过搜 1.txt
找到这个代码
之外可能这个文件的写入是在库里面做的,如引用了 林德熙是逗比.dll
在这个库里面写入了文件
那么有什么有效的方法?
可以通过这样的方法,先删除这个文件,然后创建一个文件夹,将这个文件夹命名为和这个文件相同的名。如删除 1.txt
文件,然后创建 1.txt
文件夹,然后获取全局异常,现在就可以发现有文件读写异常的代码应该就是写入 1.txt
文件的代码
除了创建文件夹之外,还可以写一个 FileStream
占用这个 1.txt
文件,找到一个文件由另一个进程占用的异常就可以找到代码在哪
不过本文提供的这些方法都做不到解决在 C++ 等库里面写文件的问题
特别感谢walterlv这位写出了 a[b[c[e[g[a1[a2[a3]]]]]]].Foo
的小伙伴提供的方法
本文会经常更新,请阅读原文: https://dotnet-campus.github.io//post/dotnet-%E5%A6%82%E4%BD%95%E8%B0%83%E8%AF%95%E6%9F%90%E4%B8%AA%E6%96%87%E4%BB%B6%E6%98%AF%E5%93%AA%E4%B8%AA%E4%BB%A3%E7%A0%81%E5%88%9B%E5%BB%BA.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 lindexi (包含链接: https://dotnet-campus.github.io/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 。