《Advanced .NET Debugging》 读书笔记 Listing 4-4: 调试Assembly加载失败的程序
2010-12-29 23:19
489 查看
程序在执行RunInDedicated()方法时会失败,原因在于执行h.Unwrap()时需要读取EntityUtil定义的程序集,但是CreateDomain()方法创建domain的时候指定的ApplicationBase为C:\\Windows\\system32。
1. 在WinDbg里载入AppDomain.exe.
2. 揿2执行RunInDedicated()方法时,出错。
3. 执行 .loadby sos.dll mscorwks
4. 执行 kb
5. 此时可以看到mscorwks抛出的异常:
6. 执行 !PE 023886d8
7. 但是此时不知道究竟在什么路径下缺失了什么assembly,此时可以启用fuslogvw,其位置在c:\Program Files(x86)\Microsoft.NET\SDK\v2.0\Bin ,进行设置。
8. 在注册表内添加相应键值LogFailures = 1
9. 此时重现错误,就是可找到AppDomain是在哪一个路径下没找到相应的Assembly的:
相关文章推荐
- 《Advanced .NET Debugging》 读书笔记 Listing 3-3: 使用debugger调试一个已经在运行的程序
- 《Advanced .NET Debugging》 读书笔记 Listing 3-4/3-5: 为breakpoint.exe程序的AddAndPrint方法加上breakpoint
- 《Advanced .NET Debugging》 读书笔记 Listing 3-10到3-14: 得到程序中各对象的内容
- 《Advanced .NET Debugging》 读书笔记 Listing 4-1/2/3: 调试 FileNotFoundException
- 《Advanced .NET Debugging》 读书笔记 Listing 3-2: 如何查看程序的PID
- 《Advanced .NET Debugging》 读书笔记 Listing 3-6: 使用sxe在程序载入mscorwks之后停下来载入sos
- 《Advanced .NET Debugging》 读书笔记 Listing 2-2: 找到托管程序02simple的入口点
- 《Advanced .NET Debugging》 读书笔记 Listing 6-3: 取得Lock的简单示例
- 《Advanced .NET Debugging》 读书笔记 Listing 6-8: Orphaned lock的示例
- 《Advanced .NET Debugging》 读书笔记 Listing 2-5/2-6: 使用debugger找到value type和reference type
- 《Advanced .NET Debugging》 读书笔记 Listing 5-4: 具有Finalize方法的简单对象
- 《Advanced .NET Debugging》 读书笔记 Listing 5-5: LOH的简单示例
- 《Advanced .NET Debugging》 读书笔记 Listing 5-8: Fragmentation的简单示例
- 《Advanced .NET Debugging》 读书笔记 Listing 3-16: 显示托管代码的Call Stack
- 《Advanced .NET Debugging》 读书笔记 Listing 2-1: 找到notepad.exe的入口点
- 《Advanced .NET Debugging》 读书笔记 Listing 2-7: 使用debugger查看对象的syncblk的数据
- 《Advanced .NET Debugging》 读书笔记 Listing 3-7: 为notepad设置断点的过程
- 《Advanced .NET Debugging》 读书笔记 Listing 5-6: Pining的简单示例
- 《Advanced .NET Debugging》 读书笔记 Listing 3-8/3-9: 为托管代码设置断点的过程
- 《Advanced .NET Debugging》 读书笔记 Listing 6-4: Deadlock的简单示例