| 网站首页 | 新闻快报 | 软件教程 | 硬件教程 | 设计学院 | Q Q 专区 | 编程开发 | 网络安全 | 
您现在的位置: 浩扬网络 >> 编程开发 >> delphi >> 教程正文
煮茶入门讲座如何调试你的程序
作者:不详 文章来源:安全中国 点击数: 更新时间:2006-8-5 1:00:20

主题:煮茶入门讲座如何调试你的程序
主讲:D10.天地弦
Demo Tools:DebugTest   和EurekaLog v4.57 Enterprise Delphi.BCB  (入门群里有共享)


Demo下载地址:
http://www.cnblogs.com/Files/DKSoft/DebugTest.rar
http://www.delphifans.com/SoftView/SoftView_1682.html

 
D10.天地弦 14:48:59
我在这个社区里经常看到一些问题
adoMain.Sql.Text :=’select * from Orders’+
+’ and OrderId = ’ + edOrderId.Text
+’ and CustomerID = ’ + edCustomerId.Text
 
D10.天地弦 14:49:05
为什么不行啊,这样的问题 
D10.天地弦 14:49:24
这种问题讲完以后如果还有人问大伙都不要理了... 
 
D10.天地弦 14:53:02
只是一个比喻... 
 
D10.天地弦 14:52:43
大家打开DebugTest.bpg 
 D10.天地弦 14:53:53
打开没有?
 
D10.天地弦 14:52:29
现在开始第一个段落 
风魂 14:54:00
开了 
赤无极 14:54:04
打开听 
D10.天地弦 14:54:09
大家配置一下ADOConnection... 
D10.天地弦 14:54:19
都会配置吧 
D10.天地弦 14:54:32
是连到Northxxx数据库的... 
D10.天地弦 14:55:17
配置好了支一声... 
B13.往生无语 14:55:30
好了 
B6.银狼 14:55:35
好了 
 
 D10.天地弦 14:55:47
可以运行程序了..
 
在CustomerId输入值 ’VINET’
D10.天地弦 14:57:43
Start Query..
D10.天地弦 14:58:55
Start Query了没有? 
B6.银狼 14:58:58
输入VINET,出错 
D10.天地弦 14:59:03

B6.银狼 14:59:06
不输入,OK 
D10.天地弦 14:59:10
en 
D10.天地弦 14:59:16
大家先做到这一部 
 D10.天地弦 15:01:09
好了,现在我们来开始调试 
D10.天地弦 15:01:46
即然是StartQuery出来的错误,那我们在BtnStartQuery.Click事件中开始分析 
D10.天地弦 15:02:01
回到Delphi界面 
D10.天地弦 15:02:15
打开主窗体... 
D10.天地弦 15:02:31
看到procedure TFMainForm.btnStartQueryClick(Sender: TObject);
const
  MAINSQL = ’select * from Orders’;
var
  lcondi: string;
  lsql: string;
begin
  lcondi := InnerGetQueryCondition;
  lsql := MAINSQL;
  if lcondi <> ’’ then lsql := lsql + ’ Where ’ + lcondi;
  adoMain.Close;
  adoMain.CommandText := lsql;
  adoMain.Open;
end;
 
D10.天地弦 15:02:35
这个函数... 
D10.天地弦 15:03:32
在函数体的第一个设置一个断点开始查找为什么会出错... 
 
尖椒牛柳 15:03:33
看懂了 
D10.天地弦 15:04:12
这堂课主要是教大家如果调试,以后可以自己搞定自己的问题... 
D10.天地弦 15:04:22
 
 
 
 
D10.天地弦 15:04:36
设置断点....按F9运行程序.... 
 D10.天地弦 15:05:55
在CustomerId输入值按StartQuery...
D10.天地弦 15:06:21
程序会返回到Delphi设置了断点的地方
 
 
{
D10.天地弦 15:06:49
这里提一下F7,F8,F9这三个功能
D10.天地弦 15:07:42
F7是进入函数体....
F8是运行这一行,不进入函数体
F9从当前行开始运行
}
 
 D10.天地弦 15:08:00
现在按F8 
D10.天地弦 15:08:06
执行当前行.... 
D10.天地弦 15:08:43
按F8直到弹出错误提示... 
D10.天地弦 15:09:37
大伙可以找到是哪一行执行的时候出现了错误?
 
 
 
D10.天地弦 15:10:47
打开一个数据集的时候出错,结合弹出的提示可以看出来是CommandText设定出错了... 
D10.天地弦 15:10:49
对不... 
F6.Jeanvi 15:11:14
嗯. 
D10.天地弦 15:11:20
这样的错误是最好找的.... 
D10.天地弦 15:11:31
好,我们再来一次 
小小 15:11:51
好  
小小 15:12:02
继续啊  
D10.天地弦 15:12:10
在adoMain.Open这一行停下来....
 
 
 D10.天地弦 15:14:52
我们现在在Open之前看看到底Sql语句是什么东东 
 
B6.银狼 15:16:12
怎么出来的啊 
D10.天地弦 15:16:13
可以看到这个adoMain.CommandText的值(Sql)是什么了... 
D10.天地弦 15:16:31
在adoMain.Open这一行停下来 
F6.Jeanvi 15:16:35
ctr+f7 
D10.天地弦 15:16:45
adoMain.CommandText选定这个 
D10.天地弦 15:16:51
按Ctrl + F7 
D10.天地弦 15:17:16
select * from Orders Where  CustomerID = VINET
看到这个值后,觉得这个值有错吗? 
 
D10.天地弦 15:17:50
如果觉得没有错马上打开
SQL 查询分析器将刚刚看到的值Sql粘贴到查询分析器里 
B6.银狼 15:18:50
收到 
D10.天地弦 15:19:09
再执行... 
D10.天地弦 15:19:29
在这里可以发现是不是Sql语句的问题.... 
D10.天地弦 15:19:46
多数是Sql语句不正确引起的... 
F2.歪歪宝 15:19:49
哦 
D10.天地弦 15:20:29
可以发现CustomerId是个字符字段。应该
select * from Orders Where  CustomerID = ’VINET’ 
D10.天地弦 15:20:32
这样.... 
D10.天地弦 15:20:47
这样我们就可以找到错误所在 
D10.天地弦 15:21:36
现在大家都知道修改程序找到这个错误.... 
D10.天地弦 15:21:43
可不可以.... 
D10.天地弦 15:22:14
可以的吱一声.... 
尖椒牛柳 15:22:16
可以
总结:
D10.天地弦 15:25:15
上面这一小节,要学到怎么样在程序出错的时候
1.大概找到程序出错的位置
2.根据错误提示,初步判断出错的东东
3.查看对象变量的值.
 
D10.天地弦 15:25:47
还有要懂得在调试程序中活用F7,F8,F9 
{暂时告一段落}
 
 
 
 
B6.银狼 15:28:51
继续DLL吧 
B13.往生无语 15:28:58
是的。。生成的文件有当前的cpu信息。信息。还有出错的语句 
 B13.往生无语 15:29:19
但是出现内存错误的时候,比如内存泄漏就不行。  
 D10.天地弦 15:29:33
继续运行 
看第二个错误... 
mmoSql里的的sql语句有错么?
 
D10.天地弦 15:32:31
为什么会出错... 
尖椒牛柳 15:32:39
D10.天地弦 15:32:46
如果删除掉注释看看... 
尖椒牛柳 15:33:13
删除注释是可以的
 
B6.银狼 15:33:42
是啊 
D10.天地弦 15:33:46
可以确定是注释惹的祸 
D10.天地弦 15:33:54
难道不用能注释? 
D10.天地弦 15:34:00
想想 
D10.天地弦 15:34:18
/*-------------------------------
-------------------------------*/
SELECT *
       FROM Orders
       ORDER BY OrderId 
D10.天地弦 15:34:38
发现变成这样也不会出错 
D10.天地弦 15:34:50
原来注释是可以用的... 
 D10.天地弦 15:36:59
有些问题要靠自己去想象,,, 
D10.天地弦 15:37:10
去不断去测试  
【教程录入:残梦    责任编辑:残梦 】
发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
网友评论:(评论内容只代表网友观点,与浩扬网络立场无关!)
热门文章

赞助商


| 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 |