##前言## 最近工做中,须要调试一些程序。郁闷的是,这些程序不能在IDE中按F5直接调试,由于它们依赖其余进程传递的命令行,也有些依赖其余进程建立的共享内存。我又不会用windbg调试程序,因此就想了些办法,能够在IDE下单步调试。学习
##1. 传递的命令行参数固定## 这是一种最简单的状况,直接在IDE中,设置命令行启动便可。测试
##2. 传递的命令行参数可变## 父进程可能会建立一些内核对象,并把内核对象的HANDLE传递给子进程,因此每次启动时,参数都是不一样的。命令行
这要怎么办呢?能够先准备好一个exe,“假装”成子进程,而后让父进程拉起。接着打开任务管理器,查看命令行参数并把它填到IDE的启动参数里,这样就能愉快的调试了~调试
##3. 子进程依赖父进程建立的共享内存## 若是共享内存的名称是固定的,那好办,用法2便可解决。若是共享内存的名称动态变化呢,好比父进程写的共享内存名称为“DATA+子进程ID”。对象
咱们固然能够先启动父进程,而后肯定共享内存名称,而后经过改子进程的代码去调试,但每次调试都要改代码,太麻烦。继承
个人解决方法是,直接修改父进程代码,让它写的共享内存名称固定,子进程也作相应修改,这样也能用法2调试。待调试OK后,代码再恢复。进程
##4. 经过LOG调试## 在代码中,在关键的地方打log是颇有必要的。方便开发测试和定位外网问题。记得有位老师说,打log调试的效率时单步调试的两倍!内存
##总结## 感受仍是有必要学习windbg的,前三个方法仅适用于父进程建立子进程时,没有让子进程继承父进程句柄。开发