posts - 297,  comments - 15,  trackbacks - 0
关于ISAPI调试的文章,网上已经有很多。今天之所以还要写这篇文章,原因有三:一是网上关于调试 ISAPI的方法大多数都是在Win2K;二是网上的例子虽然多,大部分都是转载,大部分作者自己从未亲自试过,就直接把别人的东西粘贴过来,往往影响了 网上搜索又误导了其他寻找答案的人;三是网上的例子有些并不详细,有些也不正确,这样不但不能帮助解决问题,还容易把人带入歧途。
 
  
 
    今天得了一点空闲,在这里详细写下ISAPI在Xp环境下的调试方法,希望初次接触到ISAPI的程序员们少一些郁闷。
 
    首先我的操作系统环境是Microsoft Windows Xp Professional。我的编译环境是Virsual C++6.0。VC的补丁主要有SP6。
 
接下来按照下面的步骤:
1、IIS的目录(根目录、虚拟目录)运行级别改为低(默认为中)
控制面板->管理工具->Internet信息服务。在默认站点上单击右键->属性->主目录(标签)->应用程序保护(N),将中(共用)改为低(IIS进程)。执行权限改为“教本和可执行文件”。
用同样的方法修改你新建的虚拟目录的运行级别。
 
2、修改本地安全策略属性
控制面板->管理工具->本地安全策略->本地策略->用户权利指派。
a、 找到“以操作系统方式操作”,双击或者右键选属性,弹出对话框后,点“添加用户或组”按钮,在输入文字区域中输入管理员帐户(又称中超级用户),“检查名 称”,“确定”添加。比如我现在登陆的帐号是Guyue,“检查帐号”之后就出现A7B4931A85554A0\Guyue, A7B4931A85554A0是我的计算机名称,Guyue是当前登陆帐户,是除Administrator之外的我的管理员帐户。“确定”添加。
b、找到“允许计算机和用户帐户被信任以便于委托”,照a的方法添加管理员帐户。
注:这里我没有加用户,直接用的管理员用户。
 
3、打开VC6.0,不需要打开任何工程。
菜单栏[Build]->[Start Debug]->Attach To Process
勾选“Show System Process”,找到inetinfo,按OK键添加到该进程。
在菜单栏[Project]->[Settings]或者直接按快捷键Alt+F7。
会 看到一个General和一个Debug标签,选择Debug标签。Category下拉列中有两个选项,General和Additional DLLs,选择Additional DLLs。在Modules中加入你要调试的DLL,勾选Try to locate others DLLs,按OK确定保存。

4、打开你的ISAPI工程中的一个CPP文件,看能不能设置断点,如果不能,按shift+F5键退出调试状态。进 入下一步。如果退出之后继续[Build]->[Start Debug]->Attach To Process,这个时候会提示,该工程不包含任何调试信息。如果能设置断点,则直接进入第六步。
注:这一步没有成功,无法attach to process,点了按钮以后process list还是空的。我是用
msdev -p <process ID>生成的一个VC6环境,在运行IE后会在异常抛出位置停止。
 
5、打开你的ISAPI工程中,确定你的编译状态为Debug状态,确定你Link(输出)的DLL和你在第三步Modules中保存的DLL为同一个文件。Rebuild一下。
 
6、菜单栏[Build]->[Start Debug]->Attach To Process
勾 选“Show System Process”,找到inetinfo,按OK键附加到inetinfo进程。打开ISAPI工程中的一个CPP文件,最好是程序的入口文件,在程序的 入口处设置断点,比如我设置的就是CIsapiWtExtension::InitInstance(...)和DWORD CIsapiWtExtension::HttpExtensionProc(...)程序一旦开始运行,马上就可以在这里截获。
注:既然步骤4里看不到process list,断点设置自然也就不管用了。
 
7、打开IE,打开你调用该DLL的站点,发出IE请求,VC应该就会在你设置断点的地方拦截到这个请求对当前DLL的操作了。

注:正如我在步骤4中讲到的那样,程序在异常位置会停住,可以看到函数的调用顺序;再就是有个小trick,可以加个ASSERT在异常附近位置,这样程序就可以停止在那儿,这样也就可以使用断点了。

posted on 2008-07-19 18:24 chatler 阅读(799) 评论(0)  编辑 收藏 引用 所属分类: VC_MFC

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2010年3月>
28123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用链接

留言簿(10)

随笔分类(307)

随笔档案(297)

algorithm

Books_Free_Online

C++

database

Linux

Linux shell

linux socket

misce

  • cloudward
  • 感觉这个博客还是不错,虽然做的东西和我不大相关,觉得看看还是有好处的

network

OSS

  • Google Android
  • Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This early look at the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
  • os161 file list

overall

搜索

  •  

最新评论

阅读排行榜

评论排行榜