说实话,这个特性是我做windows开发以来最为赞赏的一个微软的功能。按照一个现在的同事好友的说法(他以前是微软的,铁杆的微软派),只要你有PDB和源代码,你就可以调试任何进程,从目前我的试验来看,此言不虚,而且做起来也不难:

  • 打开一个新的Visual Studio(我用的2005)
  • 选择Tools->Attach to Process
  • 选择你想调试的进程,在选择的时候注意可能要修改Code Type,就我们的项目而言,外壳是C#的,但是调用的都是C++写的COM,所以我把Code Type从自动修改成Managed和Native。
  • 在自动打开的Modules里面选择你需要调试的module,就是load symbol(其实也可以通过Tools->options->debugging->symbols设置全局的symbol,这样就不用每次debug的时候手动的load symbol了),其实就是PDB文件
  • 打开源代码,不需要创建任何工程或者Solution,在进程的操作会触发的地方设置一个断点,等待或者手工触发那个断点的路径