U9 调试技巧开头:1. 调试之前:a)查询是否通用问题.b)通过 LOG 解决问题.(LOG 扩展)c)知识点:2. 调试过程:a)重现 BUGb)描述 BUGc)分面治之d)创造性思考 - e)利用工具 f)重度调试g)学习和分享VS 的调试相关A. 基本调试选项-源文件和原始版本完全匹配一般建议源文件和原始版本完全匹配勾上,这样调试能保证在正确的版本上进行调试,如果调试的版本不一致,有可能导致看到了错误的结果和代码。目前,每次构造 UBF 发版都会有相应的代码备份提供。--注意项目选项中的代码优化选项.B. 基本调试选项-异常中断选项在 VS 调试时,按下 CTRL+ALT+E 可以弹出异常中断选项,当 UBF 或者开发人员的代码吃掉异常时,又不进行 LOG 时,用此方法,可以将Common Language Runtieme Exceptions 引发(T) 勾上。这样,只要代码中抛出异常,就会被 VS 截获,并展现出来。但同样,有个缺点是,任何的异常都会被展现,对于有些代码中不规范的用try..Catch 方法来屏蔽错误的,也会报出来,可能会导致出现很多异常被展现。C. 基本调试选项-附加到进程(需要勾选显示所有用户的进程)对于目前 U9 的调试,直接附加到 w3wp 进程就可以了;如果走工作流调试,需要附加到“UFIDA.U9.CS.Collaboration.MailService.exe”;如果后台调度执行,需要附加到“UFIDA.U9.UBF.SystemManage.ApplllicationService.exe”。对于很多问题的解决,需要同时进入两个进程,可以同时附加两个进程(选中多个进程即可)。目前大部分情况使用单机版本,只需要附加 W3WP 进程即可.D. 基本调试技巧-断点的高级设置对于一些循环次数较多,但又必须要在循环中设断点进行调试的情况,可以在断点上点右键,使用断点的命中条件,次数。。来进行设置,使断点能命中在你所需要的进行情况下。加快调试的速度。E. 基本调试技巧-查看堆栈信息不管是从 LOG 文件(U9 安装目录,..\portal\log 下)中,还是从调试的过程中,查看堆栈信息,都是解决错误的基本快速的手段。通过在调试中,查看堆栈,了解代码的执行过程。并能够通过双击某一堆栈行,来将当前的关注点定位过去,查看当前上下文的数据。此时,很多时候,需要F. 基本调试技巧-查看内部异常信息很多异常信息在使用 VS 调试的时候,只是看到外部异常对象.这个信息如果被包装的不是很正确的话,将可能造成查看的异常不明确,无法解决问题.一般正确的捕获异常并再次抛出新异常时,都会将原有的异常对象作为新异常对象的 InnerException.这样就能保留原有的错误信息和堆栈.方便找出问题的根本原因.对于这样的异常对象,一定要找到最 Inner 的 Exception,才会发现问题的最根本原因,最根本的堆栈.G. 中级调试技巧-对象监控 ID 的创建创建对象 ID 是一个很好的跟踪对象变化的方式,比如实体对象,可能在一些上下文中并不能很好的监控到对象.当可以监控时,创建该对象 ID,然后就可以用 1# 这样的方式在任何位置,地方.都能去观察该对象,省去了查找该对象的麻烦.H. 中级调试技巧-异常回溯在异常出现后,用启用编辑,将程序回退到出现异常前一刻,然后你可以改变参数或者变量的值,来尝试改变逻辑后,能否通过…I. 改善调试速度-仅监控有调试需要的代码文件由于目前的 Portal 和 ApplicationServer 都比较大,附加这两个进程的时候,如果你是用你当前的一个项目去附加,会使 VS 挂载进程和调试都比较慢。好的办法是:当一般在你在 LOG 中已经发现问题所在.CS 文件后,就可以直接将该文件拖到一个新打开的 VS 中,直接调试。不用加载该代码所在的项目。J. 改善调试速度-设置调试的超时时间由于 VS 默认的设置调试超时时间,可能在 U9 某些调试过程中不适合,而导致超时的发生.一但超时,就无法继续调试,只能重新来过.使用下面的注册表配置,可以延长超时时间设置.防止不必要的超时.该注册表配置,不能解决偶发生的 IIS 调试中断,必须要重新启动 IIS.才可继续调试问题.U9 调试环境1.注意 DLL 匹配问题.目前后期少见一些.注意接口变动导致.常见的对应错误信息: 找不到***方法,在**DLL 中. A-〉B...