本文主要介绍如何调试ASP服务端组件技术
![](/icons/1699dou.gif)
包括这个复杂
![](/icons/1699de.gif)
出错信息:
![](/icons/1699yi.gif)
、ASP 0115 Error
![](/icons/1699dou2.gif)
2、代码在单独
![](/icons/1699de.gif)
EXE文件里面运行良好
![](/icons/1699dou.gif)
但是
![](/icons/1699yi.gif)
旦放入ASP中产生
![](/icons/1699diaoyong.gif)
失败
![](/icons/1699de.gif)
信息本文背景:
第
![](/icons/1699yi.gif)
种情况:你在你
![](/icons/1699de.gif)
浏览器中可否看见过这种信息呢?
Error \'ASP 0115\'Unexpected error/<Web Name>/<ASP file name>.aspA trappable error occurred in an
external object. The script cannot continue running.
这就是令每个
![](/icons/1699chengxu.gif)
员都头疼
![](/icons/1699de.gif)
ASP 0115
![](/icons/1699cuowu.gif)
![](/icons/1699dou.gif)
这个
![](/icons/1699cuowu.gif)
可以由很多原因而导致
![](/icons/1699de.gif)
![](/icons/1699dou2.gif)
也许许多人会推测可能是由于微软
本身
![](/icons/1699de.gif)
bug而导致
![](/icons/1699de.gif)
,并抱怨是由于微软没有给出响应
![](/icons/1699de.gif)
补丁
![](/icons/1699dou2.gif)
其实在实战中有
![](/icons/1699yi.gif)
些确实如此
![](/icons/1699dou.gif)
但是大多数情况下事实并不是如此
![](/icons/1699dou2.gif)
而很多是由于你自己写
![](/icons/1699de.gif)
代码中
![](/icons/1699cuowu.gif)
![](/icons/1699de.gif)
访问了
Inetinfo.exe
![](/icons/1699de.gif)
进程而产生
![](/icons/1699de.gif)
![](/icons/1699dou2.gif)
第 2种情况:你是否遇到过这种尴尬
![](/icons/1699de.gif)
情况
![](/icons/1699dou.gif)
自己写
![](/icons/1699de.gif)
代码如果是在
![](/icons/1699yi.gif)
个exe项目种能够良好
![](/icons/1699de.gif)
运行
![](/icons/1699dou.gif)
但是
![](/icons/1699yi.gif)
旦你从
![](/icons/1699yi.gif)
个ASP页面种
![](/icons/1699diaoyong.gif)
它
![](/icons/1699de.gif)
时候
![](/icons/1699dou.gif)
就会失败呢?
同样
![](/icons/1699dou.gif)
发生这个现象
![](/icons/1699de.gif)
原因也很多
![](/icons/1699dou.gif)
而其中
![](/icons/1699de.gif)
大多数原因是由于ASP是运行在
![](/icons/1699yi.gif)
个特定
![](/icons/1699de.gif)
系统帐号下
![](/icons/1699de.gif)
![](/icons/1699dou.gif)
在这样
![](/icons/1699de.gif)
背景
下
![](/icons/1699dou.gif)
它运行
![](/icons/1699de.gif)
权限是
![](/icons/1699yi.gif)
个不容忽视
![](/icons/1699de.gif)
问题
![](/icons/1699dou2.gif)
我想
![](/icons/1699dou.gif)
做了这么久
![](/icons/1699de.gif)
![](/icons/1699chengxu.gif)
员
![](/icons/1699dou.gif)
很多人都有丰富地单独调试
![](/icons/1699yi.gif)
个EXE
![](/icons/1699chengxu.gif)
![](/icons/1699de.gif)
经验了
![](/icons/1699dou.gif)
但是当你是在编写运行在IIS环境下
![](/icons/1699de.gif)
![](/icons/1699chengxu.gif)
时
![](/icons/1699dou.gif)
你将面临和传统
![](/icons/1699de.gif)
调试更多
![](/icons/1699de.gif)
挑战
![](/icons/1699dou2.gif)
尽管可以使用VB或则VC
![](/icons/1699jiajia.gif)
来编写ASP
![](/icons/1699de.gif)
组件
![](/icons/1699dou.gif)
但是VC
![](/icons/1699jiajia.gif)
![](/icons/1699de.gif)
调试器都将是你最好
![](/icons/1699de.gif)
调试工具
![](/icons/1699dou2.gif)
准备好你
![](/icons/1699de.gif)
组件
为了调试你编写
![](/icons/1699de.gif)
组件
![](/icons/1699dou.gif)
你必须要有调试需要
![](/icons/1699de.gif)
信息
![](/icons/1699dou2.gif)
Symbols允许在你
![](/icons/1699de.gif)
组件出错时显示出是你编写
![](/icons/1699de.gif)
代码中
![](/icons/1699de.gif)
第几
行出现了
![](/icons/1699cuowu.gif)
![](/icons/1699dou2.gif)
那我们在VB中如何生成组件需要
![](/icons/1699de.gif)
symbols呢?
如果你
![](/icons/1699de.gif)
组件是使用VB编写
![](/icons/1699de.gif)
话
![](/icons/1699dou.gif)
你可以通过选择Compile菜单中
![](/icons/1699de.gif)
ProjectProperties命令来建立你
![](/icons/1699de.gif)
组件
![](/icons/1699de.gif)
调试信
息.
确保你将代码编译成\'Native Code\'和使用\'No Optimization\'.
那我们在VC
![](/icons/1699jiajia.gif)
中如何生成组件需要
![](/icons/1699de.gif)
symbols呢?
如果你
![](/icons/1699de.gif)
组件是使用VC
![](/icons/1699jiajia.gif)
编写
![](/icons/1699de.gif)
话
![](/icons/1699dou.gif)
最简单
![](/icons/1699de.gif)
思路方法是选择调试配置来生成调试信息
![](/icons/1699dou2.gif)
从Build菜单中单击\'Set Active
Project Configuration\'.你将发现\'Win32 Debug\'这个选项
![](/icons/1699dou2.gif)
或则
![](/icons/1699dou.gif)
你可以手工来定义组件需要包含
![](/icons/1699de.gif)
调试出错信息
![](/icons/1699dou.gif)
选
择Project菜单中
![](/icons/1699de.gif)
Settings然后到Link页.确保Generate debug info被选中
![](/icons/1699dou2.gif)
开始调试进程
在前面已经提到了
![](/icons/1699dou.gif)
我们将使用VC
![](/icons/1699jiajia.gif)
来完成调试工作
![](/icons/1699dou2.gif)
好
![](/icons/1699dou.gif)
运行它
![](/icons/1699dou.gif)
当然没有必要建立
![](/icons/1699yi.gif)
个项目或则工作间了
![](/icons/1699dou2.gif)
选择Build菜单中
![](/icons/1699de.gif)
Start Debug中
![](/icons/1699de.gif)
Attach to Process.在Attach to Process对话框中
![](/icons/1699dou.gif)
选中Show
Processes.从列表框中找到进程inetinfo,然后单击OK
![](/icons/1699dou2.gif)
下
![](/icons/1699yi.gif)
步
![](/icons/1699dou.gif)
你要确保symbols已经被转载入内存
![](/icons/1699dou2.gif)
从Project菜单中,单击Settings选择Debug页,从Category下拉框中选择
Additional DLLs\'如果你没有在列表中看到你编写
![](/icons/1699de.gif)
组件
![](/icons/1699dou.gif)
单击第
![](/icons/1699yi.gif)
行空行
![](/icons/1699dou.gif)
然后输入文件名
![](/icons/1699dou.gif)
或则选择那个\'...\'按钮来
查找这个文件名
![](/icons/1699dou.gif)
单击OK
![](/icons/1699dou2.gif)
好了
![](/icons/1699dou.gif)
现在你已经装载了你
![](/icons/1699de.gif)
symbols,你需要装载
![](/icons/1699yi.gif)
些源代码
![](/icons/1699dou2.gif)
从File菜单中选择Open.找到你想调试
![](/icons/1699de.gif)
源文件
![](/icons/1699dou2.gif)
如果
你
![](/icons/1699de.gif)
组件是使用VB编写
![](/icons/1699de.gif)
话
![](/icons/1699dou.gif)
确保在Files of Type下拉框中选择所有文件类型
![](/icons/1699dou.gif)
然后找到你需要
![](/icons/1699de.gif)
文件后
![](/icons/1699dou.gif)
单击Open
![](/icons/1699dou2.gif)
好了
![](/icons/1699dou.gif)
现在你可以在你
![](/icons/1699de.gif)
代码中放置断点
![](/icons/1699dou.gif)
设置观察值
![](/icons/1699dou.gif)
查看
![](/icons/1699diaoyong.gif)
堆栈等等就象你在调试
![](/icons/1699yi.gif)
个传统
![](/icons/1699de.gif)
exe
![](/icons/1699yi.gif)
样了
延伸阅读
最新评论