当前位置:首页 > 全部子站 > 备课网 > 学院

怎么样调整测试你地C#程序

来源:长理培训发布时间:2017-08-20 20:27:32

   欢迎来到C#的奇妙天空,在这里,希望你能获得你想获得的东西,.我们真诚希望能给你带来巨大的帮助,带你进入另外一个广阔的空间。 

Come on. Follow me and then U can Win! 
   同Linux下的Gnu C ++ 工具中的gdb类似,C#提供了一个命令行调试程序"Cordbg.exe",通过这个程序你可以很轻松的调试你的C#应用程序,本文在下面不可能完全给你介绍cordbg的功能,我只是希望能通过本文的介绍,能让你获得一些的东西。能对你有所帮助,对我来说是一件很高兴的事情。废话还是少说! 

Cordbd: Microsoft (R) Common Language Runtime Test Debugger Shell 
   我暂时不定义这个东东,我们一步一步的看下来: 

   我的机器配置:Win2K Professional+iis 5.0+Microsoft .NET Framework SDK(Beta2) 

   我们来开始一个简单的的程序: 

Test-1.cs 
/* 
'Data:2001-12-13 
'Author:龙山文化 
'FileName:Test-1.cs 
'One Csharp Test Program 
*/ 
using System; 
class Test_1 

  static void Main() 
  { 
   string str; 
   Console.WriteLine("Please Enter Your Name. Thanks!"); 
   str=Console.ReadLine(); 
   Console.WriteLine("------------------------------------rn"); 
   Console.WriteLine("Dear "+str+", Welcome To Csharp's World!rn"); 
   Console.WriteLine("------------------------------------rn"); 
  } 

   上面这个程序是极其简单的,后面的文章中我将用一个比较复杂的例子来调试。我们现在一步步的开始吧! 

   不过请注意我使用"/*… …*/"来标记了注释和一些相关文字的说明。 

   开始->运行->Cmd,ok,现在打开了一个Dos窗口,编译你的C#程序。(下面的所有输入动作是一个整体的调试过程,请注意不要混淆我加在后面的注释。而且也请依照颜色来判断那些是我输入的数据,那些是计算机输出的数据) 
   调试开始: 

   第一步:编译上面的程序 

   E:Cs>csc /debug Test-1.cs 

   /* 注意这里我在编译这个Test-1.cs是加了 "debug"这个参数的(这个debug后面的参数就请你老人家自己勤快一下,看看MSDN),如果没有什么错误的话我们继续。需要提醒大家一点的是有的用户的系统PATH中没有指定Csc.exe所在的位置,在运行"Csc.exe"的时候,未必能够找到,那个时候你就必须指定Csc.exe的路径,比如我的Csc.exe的路径就是:"E:Program FilesMicrosoft.NETFrameworkSDKBinCordbg.exe",说这么一些废话其实是因为有的时候在安装了VS7(Beta 2)的电脑上不能直接调用这个东西。 

   编译过后用Dir查一下你的文件路径,除了多了一个Test-1.exe外还,多了另外一个Test-1.pdb,这是一个存储调试信息的文档。 

*/ 

   第二步:装载你的程序;(下面就是你装载一个程序后系统输出的信息) 

E:Cs>Cordbg Test-1.exe 
Microsoft (R) Common Language Runtime Test Debugger Shell. 
Version 1.0.2914.16 Copyright (C) Microsoft Corp. 1998-2001. All rights reserved 


(cordbg) run Test-1.exe 
Process 22952/0x59a8 created. 
Warning: couldn't load symbols for c:winntmicrosoft.netframeworkv1.0.2914ms 
corlib.dll 
[thread 0x59a4] Thread created. 

012: Console.WriteLine("Please Enter Your Name. Thanks!"); 
(cordbg) 
/* 装载程序还有另外一种方法,我将在以后的文档中加以说明。*/ 
   第三步:调试你的程序;(下面的出现的将是调试程序的时候所有的代码,请注意我的注释是加在后面的) 

(cordbg)sh 18 
001: /* 
002: 'Data:2001-12-13 
003: 'Author:龙山文化 
004: 'One Csharp Test Program 
005: */ 
006: using System; 
007: class Test_1 
008: { 
009: static void Main() 
010: { 
011: string str; 
012:* Console.WriteLine("Please Enter Your Name. Thanks!"); 
013: str=Console.ReadLine(); 
014: Console.WriteLine("------------------------------------rn"); 
015: Console.WriteLine("Dear "+str+", Welcome To Csharp's World!rn"); 
016: Console.WriteLine("------------------------------------rn"); 
017: } 
018: } 
   /*"sh" 命令是查看被调试程序源代码的,其实这个源代码还是从Test-1.cs中装载的,如果你的Test-1.cs不存在的话,在装载被调试的程序的时候会出现如下错误代码: 

   "Error loading source file 'E:

 

[1] [2] 下一页  

 

CsTest-1.cs': File not found" 

   当然程序还是可以运行的。只不过原来的最后一行的C#代码显示,变成了汇编代码的显示。关于汇编方式的显示我将在后面的文章中加以介绍。 
*/ 

(cordbg) b 12 
Breakpoint #1 has bound to E:CsTest-1.exe. 
#1 E:CsTest-1.cs:12 Main+0x0(il) [active] 
… … 
   /*通过b 命令设置了程序断点,天啦!你不要告诉我连什么是断点都不知道哟。如果你不知道的话,那么老大你还是不要看了吧。 

   设置断点调试程序调试程序最重要的一个方法 

   b 命令也可以查看所有已经被设置的断点,如下所示 

*/ 
(cordbg) b 
#1 E:CsTest-1.cs:12 Main+0x0(il) [active] 
#2 E:CsTest-1.cs:13 Main+0xa(il) [active] 
#3 E:CsTest-1.cs:14 Main+0x10(il) [active] 
(cordbg) con 
Please Enter Your Name. Thanks! 
break at #2 E:CsTest-1.cs:13 Main+0xa(il) [active] 

013: str=Console.ReadLine(); 
/* 
   con 命令表示继续执行程序代码,一直执行到下一个断点,本来程序被装载后默认设置了一个断点,在使用sh命令察看源代码的地方某行代码的序号被加了一个"*",这行代码就算是系统默认的断点设置。 

   另外有个"next" 命令也可以用来调试,但是表示执行到下一行,而不是下一个断点行。请注意区分,你也可以实际的操作来看看具体的效果 

*/ 
(cordbg) con 
龙山文化 
break at #3 E:CsTest-1.cs:14 Main+0x10(il) [active] 
014: Console.WriteLine("------------------------------------rn"); 
(cordbg) p str 
str=(0x00ba3414) "龙山文化" 
/* 
   上面的调试代码利用 con命令执行到下一个断点:获得了一个系统输入字符串"龙山文化" 

   并且利用"p" 命令打印出了变量"str"中的数据,在调试程序的时候打印程序中的程序变量是很关键的动作。 

*/ 
(cordbg) con 
------------------------------------ 

Dear 龙山文化, Welcome To Csharp's World! 

------------------------------------ 

[thread 0x5fb0] Thread created. 
[thread 0x59a8] Thread exited. 
Process exited. 
/* 
con执行下一个断点后,程序运行到结束。 
*/ 
   到这步为止,一个最简单的C#程序就通过Cordbg通过最简单的方式调试完成了,在后面的文章中我将会给你展示更加复杂的程序的调试  

 

上一页  [1] [2] 

责编:杨粟梅

发表评论(共0条评论)
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,发表审核后显示!

国家电网校园招聘考试直播课程通关班

  • 讲师:刘萍萍 / 谢楠
  • 课时:160h
  • 价格 4580

特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关

配套通关班送国网在线题库一套

课程专业名称
讲师
课时
查看课程

国家电网招聘考试录播视频课程

  • 讲师:崔莹莹 / 刘萍萍
  • 课时:180h
  • 价格 3580

特色解密新课程高频考点,免费学习,助力一次通关

配套全套国网视频课程免费学习

课程专业名称
讲师
课时
查看课程
在线题库
面授课程更多>>
图书商城更多>>
在线报名
  • 报考专业:
    *(必填)
  • 姓名:
    *(必填)
  • 手机号码:
    *(必填)
返回顶部