虚心请教一下 VS 中附加到进程进行调试的原理!

2019-02-15 14:35:03 +08:00
 EKkoGG

语言:C#

主程序:一个 WinForm,通过调用 DLL 插件工作

插件:自己编写的一个 DLL

调试过程:

  1. 先将主程序配置为 DEBUG 模式,主程序打开后 UI 处于等待状态
  2. 这时在自己编写的 DLL 中打断点然后附加进程到主程序进行调试
  3. 程序顺利进入自己编写的 DLL 中的断点

刚入行的小白,明白动态加载 DLL 是通过反射的机制,但是为什么附加进程到主程序进行调试就可以顺利进入 DLL 的断点呢?因为没有主程序的代码,所以不是很明白其中的工作原理,在搜索引擎也没找到比较清晰的解释,所以希望各位大大指教一下 XD

2259 次点击
所在节点    问与答
6 条回复
EKkoGG
2019-02-15 14:39:36 +08:00
希望大哥们帮助一下哈哈哈哈
xomix
2019-02-15 14:52:27 +08:00
有.pdb 作为解释文件,然后通过进程间通讯来附加断点,剩下的就是通过本机反射和进程通讯获取数据了。我了解的也就这么多,没有更深入的信息了。
EKkoGG
2019-02-15 14:56:37 +08:00
@xomix
哈哈哈 很感谢了~
EKkoGG
2019-02-15 15:07:44 +08:00
.net 相关
xomix
2019-02-15 16:42:25 +08:00
哦对如果编译成 il 走中间件的话
https://www.cnblogs.com/zery/p/3366175.html
那制还要更简单一些。
EKkoGG
2019-02-15 17:09:27 +08:00
@xomix
哈哈 感谢感谢
另外关于附加到进程
https://stackoverflow.com/questions/42563900/how-does-the-visual-studio-attach-to-process-work
https://www.zhihu.com/question/30302856

这两个网页的内容应该对你 2L 的回复有补充作用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/535328

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX