工具|--LINQPad|--使用DnSpy调试LINQPad
前言
LINQPad本身就有调试功能,
使用dnSpy调试LINQPad的代码, 岂不是多此一举 ?
其实主要是为了使用dnSpy调试LINQPad中使用到依赖dll的的底层代码,
比如, 在LINQPad中使用到了WPF的dll, 使用dnSpy就可以调试到WPF的一些底层代码.
并且, 我尝试过, 直接使用dnSpy加载LINQPad生成的dll,
结果一直报错, 最后只能附加到进程调试LINQPad中的源码.
1.启动LINQPad中的查询
此时一个标题为"Simple WPF Program"WPF程序会运行起来
2.打开DnSpy进行附加进程
1.dnSpy菜单栏--文件--打开( 如何通过LINQPad找到生成dll的文件夹在另一篇笔记中有 ~ )
打开在LINQPad生成的dll, 此时可以看到源码, 找到源码加入断点
2.dnSpy菜单栏--调试--附加到进程
3.点击"Simple WPF Program"WPF程序的按钮, 就可以看到断点已经有了
扩展.WPF程序开始运行的时候就开始调试
上面的例子, 只能将程序运行起来之后, 再通过断点来调试,
没有办法在程序运行的时候, 就可以调试.
比如我想看WPF中Application类初始化过程,
此时, 就要想到那句"任何软件工程遇到的问题都可以通过增加一个中间层来解决..."
我再增加一个方法, 用来触发初始化WPF, 不是直接运行WPF,
可以搞一个输入框, 只有输入某个字符, 才会运行WPF, 这样就可以了.
# 注意事项,
运行了LINQPad的一个Query后,
在附加到进程的那一步,
会有多个"LINQPad.exe", 很容易选错...
结尾
最刚开始, 我也想着不通过"附加到进程",
而是直接"dnSpy菜单栏--调试--开始调试",
然后选择dll, 然后直接开始调试,
但是使用LINQPad生成的dll, 总是报错,
(使用Visual Studio生成的WPF程序的dll开始调试, 却可以)
但是总是报错 :
无法启动调试器, 请确保您有权限访问文件'C:\XXXX\LINQPadQuery.dll'
错误 Coule not execute 'C:\XXXX\LINQPadQuery.dll'
如果哪位知道如何直接开始调试LINQPad生成的dll的话,
可以告知下~ 谢谢 ~
"任何软件工程遇到的问题都可以通过增加一个中间层来解决..."