目前有一个sln,里面包含一个启动project    A.exe 
一个界面project  B.exe
n个dll的project  c.dll  d.dll等等 供B.exe调用正常业务逻辑是 A.exe启动 ,调用 B.exe  
我想达到的目的 :程序由 A.exe启动 ,并且能够在 B中和 其他 dll代码中 设置断点 调试
如果 同时 能 在 所有代码 中设断点调试就更好了,至少 能让我实现每一次 想在哪里断点都可实现
目前如果我把 A设置为 startup PROJECT  ,则不能在 除了A以外的代码中断点 
如果把 B设置为startup project,则 直接启动 B.exe了 ,A没有被启动 ,我还没有尝试此情况下 能不能在dll里断点 请高人指点啊,好久没csdn,没分了,我还有一系列的问题请大家帮忙呢,多谢了[/b]

解决方案 »

  1.   

    你直接改下A屏蔽启动B的地方 然后A运行 B调试运行就行了啊 只要B设置了依赖的dll 那些dll和B都可以一起调试的
      

  2.   


    A B之间启动有时序要求的,而且有通信建立,并且A不止启动B一个程序,这几个程序有顺序要求的啊
      

  3.   

    假设B是dll程序,那么在A工程中:先把B工程引入(这个应该会吧),然后在A的入口函数中调用dll动态库,最后在B的入口函数中设置断点。启动程序A就会进入dll了,希望有帮助
      

  4.   


    A B之间启动有时序要求的,而且有通信建立,并且A不止启动B一个程序,这几个程序有顺序要求的啊
    你先运行A的exe 然后工程里调试运行B 怎么没顺序了? 只是让你把A启动B的地方先屏蔽下便于调试而已
      

  5.   


    A B之间启动有时序要求的,而且有通信建立,并且A不止启动B一个程序,这几个程序有顺序要求的啊
    你先运行A的exe 然后工程里调试运行B 怎么没顺序了? 只是让你把A启动B的地方先屏蔽下便于调试而已不好意思,我说的是时序,不是顺序,而且不仅是顺序,我上面都说了,顺序问题是不止一个exe被调用,这之间存在顺序,其实这是个非常大的一个工程,所以很繁琐
      

  6.   

    跨进程调试【Tools】-【Attach to Process...】
    可以开启一个VS,也可以开始两个VS。
      

  7.   

    我的环境是vs2005 ,我现在情况就是,把A设为startup project,断点就只能设在A中,把B设为startup project,就只启动B 了,把两个设置为多重startup,都能启动,而且都能断点,但是因为本身A包含了启动B的代码,因此就会有两份B在同时存在了
      

  8.   

    把A设为startup project   dll依赖在对应工程属性 输入中设置好
    当A调用B B进程起的时候  【Tools】-【Attach to Process】
    就是工具里面的第一个
    找到B进程双击 就好了
      

  9.   


    我用的vs2005,tools菜单里真的没看到Attach to Process选项,而且你的描述貌似是要手疾眼快吗
      

  10.   


    我用的vs2005,tools菜单里真的没看到Attach to Process选项,而且你的描述貌似是要手疾眼快吗你的B一运行 就关闭的么?
    如果是 你可以在B里面加一个messagebox 弹出message后 再用快捷键 ctrl+alt+p
    找到B进程 双击 点掉messagebox 然后加断点就可以调试B了
    不是的话 就在B进程启动后 ctrl+alt+p
    找到B进程 双击 然后加断点就可以调试B了
      

  11.   


    我用的vs2005,tools菜单里真的没看到Attach to Process选项,而且你的描述貌似是要手疾眼快吗
    我用的vs2005,tools菜单里真的没看到Attach to Process选项,而且你的描述貌似是要手疾眼快吗我在debug菜单找到了,但是还是要手疾眼快吗,一启动马上去选择?那手不快咋办呢,我先试试
      

  12.   


    我用的vs2005,tools菜单里真的没看到Attach to Process选项,而且你的描述貌似是要手疾眼快吗你的B一运行 就关闭的么?
    如果是 你可以在B里面加一个messagebox 弹出message后 再用快捷键 ctrl+alt+p
    找到B进程 双击 点掉messagebox 然后加断点就可以调试B了
    不是的话 就在B进程启动后 ctrl+alt+p
    找到B进程 双击 然后加断点就可以调试B了我试了这个方法,在B的main开始就放了个对话框,断点放在对话框后的语句,然后按照此过程执行,但是依旧跑不到断点(于是我为了还原状况,单独做了三个例子程序,一个shell.exe  一个 dllcall.exe  一个 dlltest.dll
    前两个均为控制台程序,shell中我用ShellExecute调用dllcall.exe dllcall调用dlltest.dll
    但是我发现一调试,dllcall.exe根本运行不起来,但是如果不通过ide,直接运行编译出来的shell.exe就可以调用到dllcall,郁闷得很,例子都做不出来)
      

  13.   

    sup_ace 你的方法至少在例子程序中可行,我刚才的例子有点问题,改了就可以了,但是在实际工程中还是不起作用,不知道是不是因为QT的原因?工程是qt的