程序集绑定查看利器——Fusion日志

Fusion是个很有用的工具,可以用来调试公共语言运行时加载程序集失败的问题。比起尝试使用Visual Studio调试器调试应用程序,更好的办法是打开Fusion日志开关然后查看记录到的日志结果。
要启用Fusion日志,你需要编辑Windows注册表。下面是具体的注册表位置信息(如果注册表中没有这些值,需要手动添加)。

HKLM\Software\Microsoft\Fusion\ForceLog 1
HKLM\Software\Microsoft\Fusion\LogPath C:\FusionLogs

其中ForceLog值是DWORD类型,而LogPath是个字符串。你可以将LogPath设置为任何你选择的位置。代码清单2-12是个绑定程序集失败的例子。

代码清单1 一个尝试绑定程序集失败的Fusion日志示例

*** Assembly Binder Log Entry (6/21/2013 @ 1:50:14 PM) ***
The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.
Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
Running under executable C:\Program Files\1UPIndustries\Bins\v1.1.0.242\Bins.exe
--- A detailed error log follows.
=== Pre-bind state information ===
LOG: User = DEV\gmclean
LOG: DisplayName = TaskbarDockUI.Xtensions.Bins.resources, Version=1.0.0.0, Culture=en-US, PublicKeyToken=null (Fully-specified)
LOG: Appbase = file:///C:/Program Files/1UPIndustries/Bins/v1.1.0.242/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = Bins.exe
Calling assembly : TaskbarDockUI.Xtensions.Bins, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: No application configuration file found.
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///C:/Program Files/1UPIndustries/Bins/v1.1.0.242/en-US/TaskbarDockUI.Xtensions.Bins.resources.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/1UPIndustries/Bins/v1.1.0.242/en-US/TaskbarDockUI.Xtensions.Bins.resources/
TaskbarDockUI.Xtensions.Bins.resources.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/1UPIndustries/Bins/v1.1.0.242/en-US/TaskbarDockUI.Xtensions.Bins.resources.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/1UPIndustries/Bins/v1.1.0.242/en-US/TaskbarDockUI.Xtensions.Bins.resources/TaskbarDockUI.Xtensions.Bins.resources.EXE.
LOG: All probing URLs attempted and failed.

编辑完注册表后,任何托管应用程序的所有解析程序集的尝试(无论成功与否)都会被记录到相应的Fusion日志文件中。显然Fusion下会有大量有用的日志文件产生,但是在大量日志文件中查找问题就像大海捞针一样困难。
幸运的是, Fusion还有个用户界面应用程序,可以帮助开发人员更容易找到自己程序的日志文件,而不用直接在众多的日志文件中苦苦寻找。图1展示了Fusion的用户界面。

图1 Fusion的用户界面可以迅速找到特定程序的日志文件

不是所有的依赖都需要直接引用程序集。一种方式就是将服务代码部署为宿主服务。这种做法需要进程或网络间的数据通讯能力的支持,但是它能最小化客户端和服务之间必需的程序集引用。

时间: 2024-10-11 15:32:20

程序集绑定查看利器——Fusion日志的相关文章

警告: 程序集绑定日志记录被关闭(IIS7 64位系统)

部署一个.NET程序在IIS7服务器,出现如下信息: 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.BadImageFormatException: 未能加载文件或程序集"XXX"或它的某一个依赖项.试图加载格式不正确的程序. 源错误: 执行当前 Web 请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息. 程序集加载跟踪: 下列信息有

Ubuntu启动、停止、重启MySQL,查看MySQL错误日志、中文编码错误

1)启动: sudo /etc/init.d/mysql start 2)停止: sudo /etc/init.d/mysql stop 3)重启: sudo /etc/init.d/mysql restart 4)查看日志: cat /var/log/mysql.err cat /var/log/mysql/error.log 5)不支持中文 修改 /etc/mysql/my.cnf 在 [client] 下面增加: default-character-set=utf8 或 character

如何创建强命名程序集, 如何查看强命名程序集的PublicKeyToken

1. 在Visual Studio中的class library工程上点右键, 选择properties. 2.  选择左边的Signing选项卡. 3. 勾选Sign the assembly复选框. 在下拉列表中选择<New...>. 4. 在弹出的对话框中给snk文件起一个名字. 按OK. 5. 程序集强命名完成. 如何查看强命名程序集的public key token ========================= 有时候你需要在web.config文件中或者其他地方引用自己写的强

mysqlbinlog 查看mysql bin 日志 mysqlbinlog: unknown variable &#39;default-character-set=utf8&#39;

mysqlbinlog  mysql-bin.000036 | less 查询包含几个字段的语句: mysqlbinlog mysql-bin.000036| egrep '(2011030610002460|2011030310001730|2011030410011680|2011030410006280)' mysqlbinlog查看二进制日志的问题 在使用mysqlbinlog查看日志的时候碰到了一个问题, 错误提示如下:/usr/local/mysql/bin/mysqlbinlog:

Linux系统 multitail 同时跟踪查看多个日志文件

一.问题描述: 平时我们在排查问题的时候往往需要查看日志文件来定位问题,有些程序可能关联的多个程序,因此需要打开多个窗口使用 tailf 或者tail -f 方式查看日志 但是需要不停的切换窗口来看不同的日志输出,比较麻烦,特别是想在同一时刻查看不同的日志文件的时候,手速再快也切换不过来的.因此 此文的主角  multitail 工具就解决这个问题的. 二.multitail 工具安装 1.系统环境 [[email protected] ~]# cat /etc/redhat-release C

查看与输出日志信息

查看与输出日志信息: 1.优先级级别从高到低: Error > Warning > Info > Debug > Verbose 2.日志输出的3种方式: (1)       Log.i (2)       System.out.println (3)       System.err.println 3.实践: 1 package com.example.test; 2 3 import android.test.AndroidTestCase; 4 import android

linux下打开、关闭tomcat,实时查看tomcat执行日志

?? 启动:通常是运行sh tomcat/bin/startup.sh 停止:通常是运行sh tomcat/bin/shutdown.sh脚本命令 查看:运行ps -ef |grep tomcat 输出例如以下 *** 5144   .. .等等.Bootstrap start 说明tomcat已经正常启动. 5144 就为进程号 pid = 5144 杀死:kill -9 5144 ------------------------linux下实时查看tomcat执行日志------------

查看系统事件日志

Win8查看系统事件日志的方法如下: 1.按快捷键win+Q打开应用界面,选择控制面板,进入控制面板,点击“系统和安全”. 2.点击“查看事件日志”. 3.进入事件查看器的第二种方法:在桌面“计算机”图标上面点击右键,选择“管理”. 4.在计算机管理界面选择“事件查看器”. 5.进入事件查看器界面,在此可查看系统事件日志. 6.点击windows日志. 7.将windows日志展开后可以查询到详细信息.

如何查看crontab的日志记录

在Unix和类Unix的操作系统之中,crontab命令常用于设置周期性被执行的指令,也可以理解为设置定时任务. crontab中的定时任务有时候没有成功执行,什么原因呢?这时就需要去日志里去分析一下了,那该如何查看crontab的日志记录呢? 1. linux 看 /var/log/cron.log这个文件就可以,可以用tail -f /var/log/cron.log观察 2. unix 在 /var/spool/cron/tmp文件中,有croutXXX001864的tmp文件,tail