工具|--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的话, 
可以告知下~ 谢谢 ~

"任何软件工程遇到的问题都可以通过增加一个中间层来解决..."

posted @ 2024-07-06 10:52  zh89233  阅读(41)  评论(0编辑  收藏  举报