Sync Service for ADO.NET程序调试(一)

使用Tracing生成LOG(数据同步日志) [DESKTOP篇]

Sync Service for ADO.NET 是微软MSF(Microsoft Sync Framework)中的一个重要组成部分,它的提 供了一套完整的开发框架,应对与各种场景的离线数据同步。我们可以用其开发一些复杂的场景,用以适 应复杂的企业逻辑。比如在一份分布式场景中:我们创建一个Server,然后使用几十或上千台PC、 Notebook以及WM Device(手机PDA移动设备)作为Client段,使用Sync Service for ADO.NET 进行数据 同步。

对于这个复杂的分布式同步场景,如何进行调试与纠错呢?这时候需要用到 Tracing in Sync Services。

什么是Tracing in Sync Services?

Tracing 记录了程序的各种操作,包括同步数据和Metadata,然后将这些信息给了 Listener。作为 Listener,可以把这些信息记录到一个文件中作为LOG日志,或者根据你的要求传送的其他地方。在一个 分布式的程序中,Tracing是相当重要的,因为你需要用到它调试程序的错误,找到问题发生的根源。否 则,查找问题发生的根源是非常困难的。

如何开始开启Tracing in Sync Services

在缺省的情况下,Tracing是关闭的。 我们可以通过配置 Trace Listener,来开启Tracing。

我们可以通过编辑 app.config来开启Tracing,请加入以下的代码:

<configuration>
 <system.diagnostics>
  <switches>
   <!-- 0-off, 1-error, 2-warn, 3-info, 4-verbose. -->
   <add name="SyncTracer" value="3" />
  </switches>

  <trace autoflush="true">
   <listeners>
    <add name="TestListener" type="System.Diagnostics.TextWriterTraceListener"  initializeData="c:\TraceSample.txt"/>
   </listeners>
  </trace>
 </system.diagnostics>
</configuration>

如何选择合适的Trace Level

Trace的记录会带来一些性能上的影响,你需要认真考虑如何设置TraceLevel,从而达到Trace记录与 产品性能上的平衡。

通常情况下,如果只是想监控错误消息,选择TraceLevel=1或2即可。 当你需要更多的LOG信息以便于 调试观察时,你可以将TraceLevel=3或4,请记住,这时候产生的LOG是非常详细的,与其对应的LOG文件 也会很大 - 这会给程序的性能带来不小的影响。通常情况下,我们只会在调试错误以及开发过程中使用 此TraceLevel。

详细信息请查看下表:

Switch value Tracing level Output
0 off No messages to trace listeners.
1 error Only error messages to trace listeners.
2 warning Error and warning messages to trace listeners.
3 info Informational, warning, and error messages to trace listeners.
4 verbose All messages to trace listeners.
时间: 2024-09-08 10:12:23

Sync Service for ADO.NET程序调试(一)的相关文章

Sync Service for ADO.NET程序调试(二)

使用Tracing生成LOG(数据同步的日志) [DEVICE篇] 在Device上调试的原理与Desktop相同,只是相关配置文件有所区别,第一次看这篇文章的朋友,请先 参阅[Desktop篇] 在Device上使用Tracing和Desktop的原理相同,仅仅是配置方法略有不同. 由于基于WinCE的 Sync Service for ADO.NET 并没有公开声明支持Tracing生产LOG,所以在 App.config中进行配置是没效果的,正确的配置方法如下: 在WinCE平台上,新建一

Android eclipse 程序调试

一:断点调试 用eclipse开发android程序的时,跟VS一样是可以断点单步调试的. 步骤如下. 1 设置断点:在编码窗体的左边框上用鼠标双击,或者右键点击菜单,选择 Toggle Breakpoint菜单项即可. 2 在debug模式下运行程序进入调试状态:通过点击工具栏上的小虫按钮或者是在项目右键点击然后选择Debug  As,Android Application菜单,启动程序的调试模式. 第一次运行调试模式eclipse会弹出如下确认窗口 当程序运行到你的断点地方时就会停下,这时可

php程序调试方法总结

  相信很多朋友们都有调试程序的经历,然而很多时候调试程序是痛苦而又漫长的过程;它不仅需要细心,更需要耐心,切忌心浮气躁.但是当找出问题并顺利解决它时,又会给人无比激动的喜悦.这里总结一下笔者在程序调试中的使用的原则,工具,以及方法.这里需要说明的是,某些原则性的东西,各种语言都是差不多的,而涉及到具体的工具和某些具体的调试方法,这里只涉及web开发方面的内容. 总体原则: 1.找出问题原因: 程序需要调试,是因为程序有问题.而调试的第一目标是找到原因.常见调试方法, 排除法: 当我们面对整个复

第十二章-异常处理与程序调试(二)(5)

12.4 程序调试简介 Delphi提供了一个功能强大的内置调试器(Integrated Debugger), 因而对程序的调试不用离开集成开发环境(IDE)就可以进行. 程序错误基本可以分为两类,即运行时间错和逻辑错.所谓运行时间错是指程序能正常编译但在运行时出错.逻辑错是指程序设计和实现上的错误.程序语句是合法的,并顺利执行了,但执行结果却不是所希望的. 对于这两类错误,调试器都可以帮助你快速定位错误,并通过对程序运行的跟踪和对变量值的监视帮助你寻找错误的真正原因和解决错误的途径. 程序调试

.NET程序调试技巧(一):快速定位异常的一些方法

  这篇文章主要介绍了.NET程序调试技巧(一):快速定位异常的一些方法,本文讲解了定位本机异常.在客户环境定位.net程序异常两方面的内容,需要的朋友可以参考下 作为一个程序员,解BUG是我们工作中常做的工作,甚至可以说解决问题能力是一个人工作能力的重要体现.因为这体现了一个程序员的技术水平.技术深度.经验等等. 那么在我们解决BUG的过程中,定位问题是非常重要的.有句话叫"发现问题是解决问题的一半. 本文讲述就快速定位异常(专指.NET程序异常)的方法.包括在本机定位异常,在客户环境定位.n

c语言-C语言简单程序调试问题

问题描述 C语言简单程序调试问题 这是源码: #include #include int main() { double x,y,z,i; for(x = 1;x<100000;x++) { y = sqrt(x+100); z = sqrt(x+268); if((y*y == x+100)&&(z*z == x+268)) { printf("%lfn",x); } } return 0; } 不知道问题出在哪里?麻烦解答一下. 另,为什么知道设定的数值范围是

自己动手写操作系统程序调试cpu关闭

问题描述 自己动手写操作系统程序调试cpu关闭 直接在裸机上运行此程序,电脑直接重起. 本人的cpu是i5 4590,程序该如何改? %include "pm.inc" org 7c00h jmp LABEL_BEGIN ;[SECTION.GDT] ;GDT LABEL_GDT: Descriptor 0,0,0 ;空描述符 LABEL_DESC_CODE32: Descriptor 0,SegCode32Len-1,DA_C+DA_32 ;代码段,32位 LABEL_DESC_VI

c语言-VS2010C语言程序调试断点跳变问题

问题描述 VS2010C语言程序调试断点跳变问题 用这张图具体说明,我在中间那条先上设置了一个断点,一步步调试到第二条横线处,就直接跳到了最上面的那条线上本来程序不是该顺序执行的么.网上说可能是换行出了问题,我用十六制在UE中检查了下,发现没有错误.但还是会出错.整体运行可以,但是断点调试这一段就会出现这样的问题 解决方案 可能是调试符号和源代码不匹配,删除了bin目录和obj目录,重新生成下看看. 解决方案二: @devmiao,谢谢你哈.刚才换了种调试方式居然没出错,现在已经不会出错了.好神

eclipse android程序没有提示错误,但程序调试时终止运行

问题描述 eclipse android程序没有提示错误,但程序调试时终止运行 刚在学习android开发,好多不懂,我按照书上的代码一个个敲的,以前敲过一遍在原先的eclipse能运行,最近换了个系统用了4.5的eclipse,环境变量应该也没问题,又照着书上敲了一边,我用手机,运行后就显示"已停止运行",程序没提示错误,不知道怎么回事,我连着照着书上敲了两个项目都是这样,求救...... 下面这是在模拟器上给出的错误提示 解决方案 这不提示很明显,LoginActivity的布局中