|  |  |  |  |  |  | 
					            
						            
							            
								            |  | 
	Windows内核调试帖子发起人: pch   发起时间: 2008-08-26 09:23 上午   回复: 15
 
	 
		
			| 
					
						|         | 
						      
						        | 帖子排序: |  |  |  |  
				
					| 
							
								| 
										
											|  2008-08-26, 09:23 上午 |  
											| 
													 pch 
 
   注册: 2008-08-26
 发 贴: 28
 | 
													
														| 请教!在win2003内核中加入了些读取系统信息的DbgPrint,出现了以下错误,不知为什么? 
 |  
														|  |  |  
											| 
													
														|   | 
																
																	| *** Fatal System Error: 0x0000000a (0x00000002,0x0000001B,0x00000000,0x8087DCCC)
 
 Break instruction exception - code 80000003 (first chance)
 
 A fatal system error has occurred.
 Debugger entered on first try; Bugcheck callbacks have not been invoked.
 
 A fatal system error has occurred.
 
 Connected to Windows Server 2003 3800 x86 compatible target, ptr64 FALSE
 Loading Kernel Symbols
 ..WARNING: Process directory table base 04357000 doesn't match CR3 005A2000
 WARNING: Process directory table base 04357000 doesn't match CR3 005A2000
 ......................................................................................
 Loading User Symbols
 WARNING: Loader 7c889e0c timestamp 42435e37 != header timestamp 42435b9a
 .................................................................................................................
 Loading unloaded module list
 ...*** ERROR: Symbol file could not be found.  Defaulted to export symbols for ntdll.dll -
 
 *******************************************************************************
 *                                                                             *
 *                        Bugcheck Analysis                                    *
 *                                                                             *
 *******************************************************************************
 
 Use !analyze -v to get detailed debugging information.
 
 BugCheck A, {2, 1b, 0, 8087dccc}
 
 *** ERROR: Module load completed but symbols could not be loaded for mssmbios.sys
 *** ERROR: Symbol file could not be found.  Defaulted to export symbols for HALACPIM.DLL -
 *** ERROR: Module load completed but symbols could not be loaded for Ntfs.sys
 *** ERROR: Symbol file could not be found.  Defaulted to export symbols for fltMgr.sys -
 Probably caused by : wrkx86.exe ( nt!_output+663 )
 
 Followup: MachineOwner
 ---------
 
 nt!RtlpBreakWithStatusInstruction:
 8086244c cc              int     3
 kd> !analyze -v
 *******************************************************************************
 *                                                                             *
 *                        Bugcheck Analysis                                    *
 *                                                                             *
 *******************************************************************************
 
 IRQL_NOT_LESS_OR_EQUAL (a)
 An attempt was made to access a pageable (or completely invalid) address at an
 interrupt request level (IRQL) that is too high.  This is usually
 caused by drivers using improper addresses.
 If a kernel debugger is available get the stack backtrace.
 Arguments:
 Arg1: 00000002, memory referenced
 Arg2: 0000001b, IRQL
 Arg3: 00000000, value 0 = read operation, 1 = write operation
 Arg4: 8087dccc, address which referenced memory
 
 Debugging Details:
 ------------------
 
 
 READ_ADDRESS:  00000002
 
 CURRENT_IRQL:  1b
 
 FAULTING_IP:
 nt!_output+663 [d:\dnsrv\base\crts\crtw32\stdio\output.c @ 871]
 8087dccc 803800          cmp     byte ptr [eax],0
 
 DEFAULT_BUCKET_ID:  INTEL_CPU_MICROCODE_ZERO
 
 BUGCHECK_STR:  0xA
 
 PROCESS_NAME:  svchost.exe
 
 TRAP_FRAME:  f7c989e0 -- (.trap fffffffff7c989e0)
 ErrCode = 00000000
 eax=00000100 ebx=00000000 ecx=00000040 edx=0100b000 esi=0100b000 edi=f7c98a60
 eip=80901859 esp=f7c98a54 ebp=f7c98cbc iopl=0         nv up ei pl nz na po nc
 cs=0008  ss=0010  ds=0023  es=0023  fs=0030  gs=0000             efl=00000202
 nt!MiDoPoolCopy+0xd3:
 80901859 f3a5            rep movs dword ptr es:[edi],dword ptr [esi] es:0023:f7c98a60={svchost (01000000)} ds:0023:0100b000=????????
 Resetting default scope
 
 LAST_CONTROL_TRANSFER:  from 808245df to 8086244c
 
 STACK_TEXT:
 f7c979bc 808245df 00000003 00000000 0000000a nt!RtlpBreakWithStatusInstruction [C:\WRK-v1.2\base\ntos\rtl\i386\debug2.asm @ 47]
 f7c97a08 8082507e 00000003 00000002 8087dccc nt!KiBugCheckDebugBreak+0x19 [c:\wrk-v1.2\base\ntos\ke\bugcheck.c @ 252]
 f7c97da0 808861a3 0000000a 00000002 0000001b nt!KeBugCheck2+0x5a4 [c:\wrk-v1.2\base\ntos\ke\bugcheck.c @ 860]
 f7c97da0 8087dccc 0000000a 00000002 0000001b nt!_KiTrap0E+0x2a7 [C:\WRK-v1.2\base\ntos\ke\i386\trap.asm @ 5739]
 f7c9809c 808737d2 f7c980b8 80830452 f7c9836c nt!_output+0x663 [d:\dnsrv\base\crts\crtw32\stdio\output.c @ 871]
 f7c980d8 808624f3 f7c98124 00000200 80830452 nt!_vsnprintf+0x2f [d:\dnsrv\base\crts\crtw32\stdio\vsprintf.c @ 130]
 f7c98340 808626be 808626a2 ffffffff 00000000 nt!vDbgPrintExWithPrefixInternal+0x9d [c:\wrk-v1.2\base\ntos\rtl\debug.c @ 323]
 f7c98360 80830643 80830452 00000780 00000002 nt!DbgPrint+0x1a [c:\wrk-v1.2\base\ntos\rtl\debug.c @ 75]
 f7c98388 80887400 80a4bb6c 00000000 f7c98420 nt!KiQuantumEnd+0x1c5 [c:\wrk-v1.2\base\ntos\ke\dpcsup.c @ 339]
 f7c9838c 80a4bb6c 00000000 f7c98420 fbf27567 nt!KiDispatchInterrupt+0xd0 [C:\WRK-v1.2\base\ntos\ke\i386\ctxswap.asm @ 315]
 WARNING: Stack unwind information not available. Following frames may be wrong.
 f7c98420 fbf27e5f ff7b8c10 f7c9856c 00000000 HALACPIM!HalClearSoftwareInterrupt+0x1b0
 f7c985e8 fbf2575e f7c986e8 ff7b8c10 e10d9a30 Ntfs+0x5e5f
 f7c986d4 fbf288de f7c986e8 ff7b8c10 00000001 Ntfs+0x375e
 f7c98880 8081f7ad 8120f020 ff7b8c10 812546e8 Ntfs+0x68de
 f7c98894 fbfe2c53 812546e8 00000000 00000306 nt!IofCallDriver+0x43 [c:\wrk-v1.2\base\ntos\io\iomgr\iosubs.c @ 2253]
 f7c988bc 8081f7ad 81210020 ff7b8c10 ff7b8c10 fltMgr!FltGetIrpName+0x11ed
 f7c988d0 80820083 81205378 ff7db870 81205368 nt!IofCallDriver+0x43 [c:\wrk-v1.2\base\ntos\io\iomgr\iosubs.c @ 2253]
 f7c988e8 8084c28c ffa40c09 812053a0 81205380 nt!IoPageRead+0x107 [c:\wrk-v1.2\base\ntos\io\iomgr\iosubs.c @ 9266]
 f7c9896c 80857682 00000000 0100b000 c000402c nt!MiDispatchFault+0xd28 [c:\wrk-v1.2\base\ntos\mm\pagfault.c @ 1241]
 f7c989c8 80885fd8 00000000 0100b000 00000000 nt!MmAccessFault+0x9c0 [c:\wrk-v1.2\base\ntos\mm\mmfault.c @ 2001]
 f7c989c8 80901859 00000000 0100b000 00000000 nt!_KiTrap0E+0xdc [C:\WRK-v1.2\base\ntos\ke\i386\trap.asm @ 5527]
 f7c98cbc 80901a0e 81160d88 0100b000 ff88d020 nt!MiDoPoolCopy+0xd3 [c:\wrk-v1.2\base\ntos\mm\readwrt.c @ 901]
 f7c98cec 80901b08 81160d88 0100b000 ff88d020 nt!MmCopyVirtualMemory+0x98 [c:\wrk-v1.2\base\ntos\mm\readwrt.c @ 432]
 f7c98d48 8088303c 00000594 0100b000 0206d304 nt!NtReadVirtualMemory+0xd0 [c:\wrk-v1.2\base\ntos\mm\readwrt.c @ 199]
 f7c98d48 7c82ed54 00000594 0100b000 0206d304 nt!KiFastCallEntry+0xfc [C:\WRK-v1.2\base\ntos\ke\i386\trap.asm @ 1369]
 0206d438 00000000 00000000 00000000 00000000 ntdll!KiFastSystemCallRet
 
 
 STACK_COMMAND:  kb
 
 FOLLOWUP_IP:
 nt!_output+663 [d:\dnsrv\base\crts\crtw32\stdio\output.c @ 871]
 8087dccc 803800          cmp     byte ptr [eax],0
 
 SYMBOL_STACK_INDEX:  4
 
 SYMBOL_NAME:  nt!_output+663
 
 FOLLOWUP_NAME:  MachineOwner
 
 MODULE_NAME: nt
 
 IMAGE_NAME:  wrkx86.exe
 
 DEBUG_FLR_IMAGE_TIMESTAMP:  48afbfe8
 
 FAILURE_BUCKET_ID:  0xA_nt!_output+663
 
 BUCKET_ID:  0xA_nt!_output+663
 
 Followup: MachineOwner
 
 |  |  
														|  | IP 地址: 已记录 | 报告 |  |  |  |  
				
					| 
							
								| 
										
											|  2008-08-26, 10:22 上午 |  
											| 
													 王宇 
 
  
   注册: 2007-05-08
 发 贴: 306
 | 
													
														| Re: 请教!在win2003内核中加入了些读取系统信息的DbgPrint,出现了以下错误,不知为什么? 
 |  
														|  |  |  
											| 
													
														|   | 
																
																	| 表象倒是不难,又是一寻址问题.. 楼主改的KiQuantumEnd()做调度实验?
 楼主把什么参数传给DbgPrint了?要小心呀,这时的IRQL非常高的。
 
 |  |  
														|  | IP 地址: 已记录 | 报告 |  |  |  |  
				
					| 
							
								| 
										
											|  2008-08-26, 10:33 上午 |  
											| 
													 Coding 
 
   注册: 2008-05-31
 发 贴: 103
 | 
													
														| Re: 请教!在win2003内核中加入了些读取系统信息的DbgPrint,出现了以下错误,不知为什么? 
 |  
														|  |  |  
											| 
													
														|   | 
																
																	| 我觉得可以从两个地方分析 第一
 Arg4: 8087dccc, address which referenced memory
 
 nt!_output+663 [d:\dnsrv\base\crts\crtw32\stdio\output.c @ 871]
 8087dccc 803800 cmp byte ptr [eax],0
 
 eax=00000100 ebx=00000000 ecx=00000040 edx=0100b000 esi=0100b000 edi=f7c98a60
 
 可以看到对[eax]的访问可能有问题。
 
 第二
 f7c98360 80830643 80830452 00000780 00000002 nt!DbgPrint+0x1a [c:\wrk-v1.2\base\ntos\rtl\debug.c @ 75]
 f7c98388 80887400 80a4bb6c 00000000 f7c98420 nt!KiQuantumEnd+0x1c5 [c:\wrk-v1.2\base\ntos\ke\dpcsup.c @ 339]
 f7c9838c 80a4bb6c 00000000 f7c98420 fbf27567 nt!KiDispatchInterrupt+0xd0 [C:\WRK-v1.2\base\ntos\ke\i386\ctxswap.asm @ 315]
 
 Arg2: 0000001b, IRQL
 
 1b==27,DbgPrint运行在了比较高的IRQL上,根据MSDN “DbgPrint and DbgPrintEx can be called at IRQL<=DIRQL”,可能是这里除了问题
 在x86的处理器上,DIRQL = 3~26。
 
 
 
 
 |  |  
														|  | IP 地址: 已记录 | 报告 |  |  |  |  
				
					| 
							
								| 
										
											|  2008-08-26, 12:17 下午 |  
											| 
													 pch 
 
   注册: 2008-08-26
 发 贴: 28
 | 
													
														| Re: 请教!在win2003内核中加入了些读取系统信息的DbgPrint,出现了以下错误,不知为什么? 
 |  
														|  |  |  
											| 
													
														|   | 
																
																	| 首先谢谢您的回复; 我是在KiQuantumEnd()中加入了一条DbgPrint,用来输出在KiQuantumEnd()中进行修改的线程的状态。难道是这地方IRQL过高了?
 
 |  |  
														|  | IP 地址: 已记录 | 报告 |  |  |  |  
				
					| 
							
								| 
										
											|  2008-08-26, 12:59 下午 |  
											| 
													 格蠹老雷 
 
   注册: 2005-12-19
 发 贴: 1,303
 | 
													
														| Re: 请教!在win2003内核中加入了些读取系统信息的DbgPrint,出现了以下错误,不知为什么? 
 |  
														|  |  |  
											| 
													
														|   | 
																
																	| 准确说是IRQL高时触发了非法访问,访问了地址2,小于4KB的线性地址都是无效的。 
 |  |  
														|  | IP 地址: 已记录 | 报告 |  |  |  |  
				
					| 
							
								| 
										
											|  2008-08-27, 08:40 上午 |  
											| 
													 pch 
 
   注册: 2008-08-26
 发 贴: 28
 | 
													
														| Re: 请教!在win2003内核中加入了些读取系统信息的DbgPrint,出现了以下错误,不知为什么? 
 |  
														|  |  |  
											| 
													
														|   | 
																
																	| 我想在KiQuantumEnd 函数中加入DbgPrint获取一些系统运行信息,但是DbgPrint and DbgPrintEx can be called at IRQL<=DIRQL,DIRQL = 3~26,而KiQuantumEnd is called at DISPATCH level and returns at DISPATCH  level. 
 |  |  
														|  | IP 地址: 已记录 | 报告 |  |  |  |  
				
					| 
							
								| 
										
											|  2008-08-27, 08:57 上午 |  
											| 
													 王宇 
 
  
   注册: 2007-05-08
 发 贴: 306
 | 
													
														| Re: 请教!在win2003内核中加入了些读取系统信息的DbgPrint,出现了以下错误,不知为什么? 
 |  
														|  |  |  
											| 
													
														|   | 
																
																	| 我只是提醒一下楼主这个例程的IRQL会很高,而蓝的主要问题还是寻址,和 http://advdbg.org/forums/991/ShowPost.aspx 的问题类似。 
 8087dccc 803800 cmp byte ptr [eax],0 在取指针里的值比较的时候,访问的地址是 READ_ADDRESS: 00000002,所以我问楼主把什么参数传给了DbgPrint,下个断点跟踪一下应该就能找到问题的。
 
 呵呵,线程优先级实验好呀...
 
 |  |  
														|  | IP 地址: 已记录 | 报告 |  |  |  |  
				
					| 
							
								| 
										
											|  2008-08-27, 11:46 上午 |  
											| 
													 holly 
 
   注册: 2008-07-14
 发 贴: 22
 | 
													
														| Re: 请教!在win2003内核中加入了些读取系统信息的DbgPrint,出现了以下错误,不知为什么? 
 |  
														|  |  |  
											| 
													
														|   | 
																
																	| http://advdbg.org/forums/1001/ShowPost.aspx 准确的说和这个帖子的情况类似,也就是我至今未解决的问题。
 不过我的例程中断是0x1c,这个是0x1b
 我的那个问题似乎是KeAttachProcess引起的,目前还没有想法怎么处理。
 
 
 |  |  
														|  | IP 地址: 已记录 | 报告 |  |  |  |  
				
					| 
							
								| 
										
											|  2008-08-27, 16:32 下午 |  
											| 
													 pch 
 
   注册: 2008-08-26
 发 贴: 28
 | 
													
														| Re: 请教!在win2003内核中加入了些读取系统信息的DbgPrint,出现了以下错误,不知为什么? 
 |  
														|  |  |  
											| 
													
														|   | 
																
																	| 我想在KiQuantumEnd 函数中加入DbgPrint获取一些系统运行信息,线程id和状态,但是DbgPrint and DbgPrintEx can be called at IRQL<=DIRQL,DIRQL = 3~26,而KiQuantumEnd is called at DISPATCH level and returns at DISPATCH level. 是不是要改变Irql级别啊,如何改啊?请推荐些资料参考。 
 |  |  
														|  | IP 地址: 已记录 | 报告 |  |  |  |  
				
					| 
							
								| 
										
											|  2008-08-28, 09:22 上午 |  
											| 
													 王宇 
 
  
   注册: 2007-05-08
 发 贴: 306
 | 
													
														| Re: 请教!在win2003内核中加入了些读取系统信息的DbgPrint,出现了以下错误,不知为什么? 
 |  
														|  |  |  
											| 
													
														|   | 
																
																	| 你是在KiQuantumEnd()  Release the thread lock 之后加的打印信息吧。 ;) 
 这时候的IRQL还没有降到DISPATCH level,不知道用DbgPrint()某些参数会不会有问题,我还没实验过。另外,你输出的格式有宽字符吗?用(%wc and %ws)宽字符会蓝的。
 
 我觉得还是要从你出问题的地方下手,这是一寻址问题呀,你看看是什么指针访问了地址00000002。另外是每次都蓝还是偶尔蓝?
 
 |  |  
														|  | IP 地址: 已记录 | 报告 |  |  |  |  
				
					| 
							
								| 
										
											|  2008-08-29, 08:23 上午 |  
											| 
													 pch 
 
   注册: 2008-08-26
 发 贴: 28
 | 
													
														| Re: 请教!在win2003内核中加入了些读取系统信息的DbgPrint,出现了以下错误,不知为什么? 
 |  
														|  |  |  
											| 
													
														|   | 
																
																	| 首先感谢你的回复。 可能是irql级别的问题,但是不知道怎么修改,下面是我改动的地方。我做的实验是想提取windows运行过程中所有线程的状态变换,除了用DbgPrint来输出信息,有没有其他的办法。
 VOID
 KiQuantumEnd (
 VOID
 )
 
 /*++
 
 Routine Description:
 
 This function is called when a quantum end event occurs on the current
 processor. Its function is to determine whether the thread priority should
 be decremented and whether a redispatch of the processor should occur.
 
 N.B. This function is called at DISPATCH level and returns at DISPATCH
 level.
 
 Arguments:
 
 None.
 
 Return Value:
 
 None.
 
 --*/
 
 {
 
 PKPRCB Prcb;
 PKPROCESS Process;
 PRKTHREAD Thread;
 PRKTHREAD NewThread;
 //自定义变量
 PEPROCESS DebugEProcess;
 PKPROCESS DebugKProcess;
 PETHREAD DebugEThread;
 extern DebugBegin;
 
 //
 // If DPC thread activation is requested, then set the DPC event.
 //
 
 Prcb = KeGetCurrentPrcb();
 Thread = KeGetCurrentThread();
 if (InterlockedExchange(&Prcb->DpcSetEventRequest, FALSE) == TRUE) {
 KeSetEvent(&Prcb->DpcEvent, 0, FALSE);
 }
 
 //
 // Raise IRQL to SYNCH level, acquire the thread lock, and acquire the
 // PRCB lock.
 //
 // If the quantum has expired for the current thread, then update its
 // quantum and priority.
 //
 
 KeRaiseIrqlToSynchLevel();
 KiAcquireThreadLock(Thread);
 KiAcquirePrcbLock(Prcb);
 if (Thread->Quantum ApcState.Process;
 if ((Process->DisableQuantum != FALSE) &&
 (Thread->Priority >= LOW_REALTIME_PRIORITY)) {
 
 Thread->Quantum = MAXCHAR;
 
 } else {
 Thread->Quantum = Thread->QuantumReset;
 
 //
 // Compute the new thread priority and attempt to reschedule the
 // current processor.
 //
 // N.B. The new priority will never be greater than the previous
 //      priority.
 //
 
 Thread->Priority = KiComputeNewPriority(Thread, 1);
 if (Prcb->NextThread == NULL) {
 if ((NewThread = KiSelectReadyThread(Thread->Priority, Prcb)) != NULL) {
 NewThread->State = Standby;
 Prcb->NextThread = NewThread;
 }
 
 } else {
 Thread->Preempted = FALSE;
 }
 }
 }
 
 //
 // Release the thread lock.
 //
 // If a thread was scheduled for execution on the current processor, then
 // acquire the PRCB lock, set the current thread to the new thread, set
 // next thread to NULL, set the thread state to running, release the PRCB
 // lock, set the wait reason, ready the old thread, and swap context to
 // the new thread.
 //
 
 KiReleaseThreadLock(Thread);
 if (Prcb->NextThread != NULL) {
 KiSetContextSwapBusy(Thread);
 NewThread = Prcb->NextThread;
 Prcb->NextThread = NULL;
 Prcb->CurrentThread = NewThread;
 NewThread->State = Running;
 //添加的代码
 DebugKProcess = NewThread->ApcState.Process;
 DebugEThread = CONTAINING_RECORD(NewThread, ETHREAD, Tcb);
 DebugEProcess = CONTAINING_RECORD(DebugKProcess, EPROCESS, Pcb);
 if(DebugBegin)
 DbgPrint("dpcsup.c330 change threadid=0x%x state=%s \n",DebugEThread->Cid.UniqueThread,NewThread->State);
 Thread->WaitReason = WrQuantumEnd;
 KxQueueReadyThread(Thread, Prcb);
 Thread->WaitIrql = APC_LEVEL;
 KiSwapContext(Thread, NewThread);
 
 } else {
 KiReleasePrcbLock(Prcb);
 }
 
 //
 // Lower IRQL to DISPATCH level and return.
 //
 
 KeLowerIrql(DISPATCH_LEVEL);
 
 return;
 }
 
 |  |  
														|  | IP 地址: 已记录 | 报告 |  |  |  |  
				
					| 
							
								| 
										
											|  2008-08-29, 12:06 下午 |  
											| 
													 格蠹老雷 
 
   注册: 2005-12-19
 发 贴: 1,303
 | 
													
														| Re: 请教!在win2003内核中加入了些读取系统信息的DbgPrint,出现了以下错误,不知为什么? 
 |  
														|  |  |  
											| 
													
														|   | 
																
																	| State字段是UCHAR类型的: 1: kd> dt KTHREAD -y state
 nt!KTHREAD
 +0x05c State : UChar
 因此DbgPrint语句中的%s明显是错误的,在前面的蓝屏中,State的值为2,因为%s,DbgPrint将2当作字符串指针来用了,所以在高IRQL导致了一个空指针访问.
 
 
 |  |  
														|  | IP 地址: 已记录 | 报告 |  |  |  |  
				
					| 
							
								| 
										
											|  2008-08-29, 13:08 下午 |  
											| 
													 王宇 
 
  
   注册: 2007-05-08
 发 贴: 306
 | 
													
														| Re: 请教!在win2003内核中加入了些读取系统信息的DbgPrint,出现了以下错误,不知为什么? 
 |  
														|  |  |  
											| 
													
														|   |  |  
														|  | IP 地址: 已记录 | 报告 |  |  |  |  
				
					| 
							
								| 
										
											|  2008-08-29, 15:39 下午 |  
											| 
													 pch 
 
   注册: 2008-08-26
 发 贴: 28
 | 
													
														| Re: 请教!在win2003内核中加入了些读取系统信息的DbgPrint,出现了以下错误,不知为什么? 
 |  
														|  |  |  
											| 
													
														|   | 
																
																	| 非常感谢! 我做的实验是想提取windows运行过程中所有线程的所有状态变换,以及一些中断信息。对于内核调试懂得不多,可否给我推荐些学习的材料。
 
 |  |  
														|  | IP 地址: 已记录 | 报告 |  |  |  |  
				
					| 
							
								| 
										
											|  2008-08-29, 17:30 下午 |  
											| 
													 王宇 
 
  
   注册: 2007-05-08
 发 贴: 306
 | 
													
														| Re: 请教!在win2003内核中加入了些读取系统信息的DbgPrint,出现了以下错误,不知为什么? 
 |  
														|  |  |  
											| 
													
														|   |  |  
														|  | IP 地址: 已记录 | 报告 |  |  |  |  
		
			|  | 
						
							| 
									
										| 总页数 1 第 2 页  [共有 16 条记录] | 1 2 > |  |  |  
		
			| 高端调试 » 软件调试 » Windows内核调试 » Re: 请教!在win2003内核中加入了些读取系统信息的DbgPrint,出现了以下错误,不知为什么? |  |  
 |  |  |  |