把VC6.0写的过滤器拿来调试时,
在网上找了教程,在可执行调试对话中添加了'E:\WINDOWS.1\system32\inetsrv\w3wp.exe
程序变量中添加 -debug在按F5后,提示Loaded 'E:\WINDOWS.1\system32\inetsrv\w3wp.exe', no matching symbolic information found.
Loaded 'ntdll.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\kernel32.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\msvcrt.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\advapi32.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\rpcrt4.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\secur32.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\user32.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\gdi32.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\ole32.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\inetsrv\iisutil.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\crypt32.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\msasn1.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\imm32.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\lpk.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\usp10.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\xpsp2res.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\inetsrv\w3core.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\oleaut32.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\wsock32.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\ws2_32.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\ws2help.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\inetsrv\w3cache.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\inetsrv\w3tp.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\inetsrv\w3dt.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\httpapi.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\shlwapi.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\strmfilt.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\inetsrv\w3comlog.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\inetsrv\lonsint.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\iisRtl.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\netapi32.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\inetsrv\wamreg.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\iismap.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\inetsrv\iisres.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\clbcatq.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\comres.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\version.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\admwprox.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\rsaenh.dll', no matching symbolic information found.
Loaded 'E:\WINDOWS.1\system32\psapi.dll', no matching symbolic information found.
The thread 0xF98 has exited with code 0 (0x0).
The thread 0xF9C has exited with code 0 (0x0).
The thread 0xF94 has exited with code 0 (0x0).
The thread 0xFA0 has exited with code 0 (0x0).
The thread 0xF80 has exited with code -1 (0xFFFFFFFF).
The thread 0xF90 has exited with code -1 (0xFFFFFFFF).
The thread 0xF88 has exited with code -1 (0xFFFFFFFF).
The thread 0xF8C has exited with code -1 (0xFFFFFFFF).
The thread 0xF84 has exited with code -1 (0xFFFFFFFF).
The thread 0xF7C has exited with code -1 (0xFFFFFFFF).
The program 'E:\WINDOWS.1\system32\inetsrv\w3wp.exe' has exited with code -1 (0xFFFFFFFF).然后该怎么办,这好象是错误的吧,望好心人能帮助解答,谢谢

解决方案 »

  1.   

    但接下来要怎么办?比如我想看看,ISAPI加载是否成功,因为我在iis上加载时,提示数据错误
    设置了断点也无法执行
      

  2.   

    IIS上设置断点怎么会无法执行呢 可以正常执行
      

  3.   

    对调试不是很明白
    这个ISAPI的功能是过滤敏感词,现在的问题是加载不成功,查看事件,是数据加载错误
    所以想看是哪条数据加载错误,有没有好的调试方法,谢谢拉
      

  4.   

    建议使用vs2003以及以上版本的vc。
    MFC ISAPI都有一个全局类,命名为C+工程名+Extension
    在此类的构造函数的第一行之前加上下面三行代码的其中一行
    1:)MessageBox(NULL,"Please debug me!","Debug",MB_OK|MB_SERVICE_NOTIFICATION);
    2:)DebugBreak();
    3:)_asm int 3
    然后在生成目录的文件夹上点右键,以debug为例,选择"共享与安全",在web共享里面选择”共享“该文件夹,权限设置为”执行“最后点确定。
    运行IIS,在浏览器里面输入http://127.0.0.1/debug/isapi的名字(如testisapi.dll,如果需要输入密码则运行inetmgr,找到debug虚拟目录,点属性,然后勾选匿名访问。
    这时会弹出一个对话框,先别点确定,回到vs2003中,在要调试的地方下好断点,然后在任务管理器中找到用户名为IWAM_XX的DLLHOST的进程ID,然后在vs2003菜单中选择调试->进程->选择刚才找到的进程ID,然后点附加,再点刚才弹出的框的确定(如果使用2或者3则点取消),然后程序就会停在断点下了,如果没停则是没下好断点,或者RPWT。
      

  5.   

    ISAPI filter可以使用写dubug文件的方式调试一、启动调试
        对于GetFilterVersion的关键点加入debug调试代码,形如:
    #if WRITE_DEBUG
        WriteDebug("Begin xxx Filter...");
    #endif
    二、运行调试
       如上,在事件响应程序的关键点写debug文件在IIS 6.0之后运行ISAPI,需要对于“web 服务扩展”设置“允许”
    同时注意系统中关键性的数据读写保护(比如注册表)
    最笨的办法,一行代码写一条调试信息总是能找到问题的如下为一个WriteDebug的函数,供参考
    void WriteDebug(LPTSTR pszMess)
    {#if WRITE_DEBUG if(::WaitForSingleObject(g_EV_Debug.m_hObject, 1000) != WAIT_OBJECT_0)
    {
    g_EV_Debug.SetEvent();
    return ;
    } CStdioFile File;
    TCHAR sz[4096]={0};
    _stprintf(sz,
    _T("%sSLog_%s.txt"),
    g_szRootPath,
    COleDateTime::GetCurrentTime().Format(_T("%y%m%d"))); if (!File.Open(sz, CFile::modeWrite | CFile::modeCreate| 
    CFile::modeNoTruncate | CFile::typeText, 0)) 
    {
    g_EV_Debug.SetEvent();
            return ;
        } 
    time_t tm;
    time(&tm);
    struct tm *p;
    p= localtime( &tm );

    _stprintf(sz,
    _T("[%02d-%02d-%02d %02d:%02d:%02d]%s\r\n"),
    p->tm_year%100,p->tm_mon+1,p->tm_mday,
    p->tm_hour,p->tm_min,p->tm_sec,
    pszMess); TRY 
    {

    File.SeekToEnd();
    File.WriteString(sz);
    File.Close(); } 
    CATCH (CFileException, e) 
    {
    e->Delete();
        } 
    END_CATCH
    g_EV_Debug.SetEvent();#endif}