用shell扩展做了一个右键菜单,
这个右键菜单只是对文本文件(*.txt)有效.
用ATL做的
问题:
我怎么样对此ATL程序进行调试?

解决方案 »

  1.   

    跟你说个小办法吧,在你想端的地方加上_asm int 3然后程序运行到那里就出错了,然后后问你选用什么调试器调试,
    VC啊,OllyDbg什么的都可以了。还可以看到源码。
      

  2.   

    1.因为这个是Shell扩展的Com程序,编译出来是DLL
    2.而这个Dll只有在右键单击文本文件时,才执行
    3.所以就不知道怎么调试了!
      

  3.   

    healer_kx(甘草(DotNeting)):
    所以这个Shell扩展的DLL程序我就不知道用什么调试器调试了!
      

  4.   

    这个办法是无所谓exe和dll的。
      

  5.   

    呵呵
    __asm int 3
    其实你写ASSERT(FALSE);也是一样的。程序会在这个地方非法中断的。然后就会弹出那个界面:
    _______________________________________________________
    xxx.exe 遇到问题需要关闭。我们对此引起的不便表示抱歉调试      发送错误报告 不发送
    ————————————————————————————————调试吧~
      

  6.   

    debug里选attach to process,attach到explorer.exe上即可
      

  7.   

    你可以这样,在dll文件所在的目录下建立一个文件run.txt,
    里面的内容是:regsvr32 XX.dll,XX.dll表示你的dll文件,它前面有一个空格。
    然后将run.txt更名文run.bat,运行这个批处理文件即可。
    然后你点下鼠标右键,应该就可以看见shell扩展的效果了。
      

  8.   

    F5  选择 一个exe 程序,让这个exe 程序 给各文件选择的对话框,在这里 right mouse down text 文件 ,
      

  9.   

    1、Shell 扩展是被 Explorer 调用起来的,所以,首先要把你的工程的调式进程设置为 Explorer.exe。2、由于当 Shell 扩展被 Explorer 调用后, 它会在内存中呆上一段时间, 这会使你无法重新编译并生成Shell 扩展 DLL 文件。对于 Windows 9x,要让 Explorer 更迅速地卸载 Shell 扩展执行文件,需要创建如下注册表项:
    HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\AlwaysUnloadDLL
    并将其值设为 "1"。而在 Windows NT/2000上, 你可以找到如下键:
    HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer
    并创建一个名为 DesktopProcess 的 DWORD 值,将该值设置为 1。这会使桌面和任务栏运行在一个进程中, 而其他每一个 Explorer 窗口都运行在它各自的一个进程内. 也就是说,你可以在单个的 Explorer 窗口内进行调试, 而后只要你关闭该窗口,你的 DLL 就会被马上卸载, 这就避免了因为 DLL 正被 Windows 使用而无法替换更新。而如果不幸出现这种情况,你就不得不注销登录后再重新登录进 Windows 从而强制卸载使用中的 Shell 扩展 DLL。3、现在,正常在 DLL 工程中设置断点,点击调试按钮,待到 Explorer 窗口出现时,找到某个 TXT 文件,右击即可。
      

  10.   

    debug里选attach to process,attach到explorer.exe上即可