我在几年前在Visual Basic 6中记得的一个很棒的事情,你可以将一个ActiveX exe项目加载到IDE中,设置一个断点,按Run并且每当有人(EXE或项目在不同的时候) IDE)调用该DLL,你的断点就会命中。
Visual Studio 2008是否可以这样?我可以将WinForms项目加载到一个IDE中,将类库项目加载到另一个IDE中,并让WinForms项目调用类库项目吗?
答案 0 :(得分:2)
你可以:
1)使用EXE将带有DLL的项目添加到解决方案中(这不是您要求的)。
2)您可以将带有DLL项目的IDE连接到从Debug运行EXE的进程 - >附加到流程。我从未尝试过将两个调试器同时连接到同一个进程。
答案 1 :(得分:2)
在VS中,您无法将两个调试器连接到同一个进程( 可以将VS和WinDbg连接到同一进程,但不能以默认方式连接)。
重点是,您不必在解决方案中使用两个调试器或包含辅助项目。在dll加载之后,您可以立即逐步执行它并在其中设置断点,就好像这是您刚刚编译的解决方案 - 您只需要dll的调试符号(pdb)。通常,dll加载时间是在进程启动时 - 但如果它是动态加载的,您可能希望在LoadLibrary调用之后立即中断,然后才在dll中设置断点。您可以提前设置断点,但在dll加载后仍然需要断点,以便将断点转换为指令地址。
[编辑:]这样做(我希望)可以回答您提出的问题,但它不会重现您描述的VB体验。 AFAIK无法在库中设置断点,该断点将应用于加载该库的每个进程。我能想到的最接近的是设置一个MessageBox,在库初始化例程(主要是DllMain)中显示进程ID,然后手动将调试器连接到该进程并根据需要设置断点。