vs调试-配置相关技术总结

1.程序运行状态下调试程序的方法

在程序运行时(不是在提调试状态),如果此时要调试某一个功能,可以通过debug->attach to process(调试->附加到进程),然后在将要调试的代码段添加断点,来对正在运行的程序进行调试:



在调试时还可以用另一个vs调试正在运行的其他的vs打开运行的exe程序


2.常用快捷键总结:

VC++:

Ctrl+k+f:格式化代码

Alt+上下箭头:跳转到上一个函数或下一个函数体

Alt+g:跳转到当前文件中

F12:跳转到定义处

ctrl+”+””-”:跳转到前一个光标位置或后一个光标位置

shift+tab:回退tab

ctrl+g:跳转到指定行


3.线程相关库及对应的编译器选项

libc.lib:单线程(static)--/ML
libcd.lib:调试版单线程(static)--/MLd

libcmt.lib:多线程(static)--/MT
libcmtd.lib:调试版多线程(static)--/MTd

msvcrt.lib:多线程dll--/MD
msvcrtd.lib:调试版多线程dll--/MDd

4.两个解决方案共用一个工程中的代码(如共用一个动态链接库的工程源文件进行编译,或其中一个解决方案调用另一个解决方案中的动态链接库)

如解决方案sln1.sln和sln2.sln

一个动态链接库工程myDll.dll工程在sln1.sln中创建,如果sln2.sln这个工程也想用sln1.sln中的myDll.dll的动态链接库,但不希望将sln1.sln中的动态链接库拷贝到sln2.sln中进行调用,而是直接配置sln2.sln中使用myDll.dll工程的那个工程的属性来将sln2.sln的生成路径指定到sln1.sln的debug或release目录下,这样就可以两个解决方案共用同一个代码,但是这样做后虽然sln2.sln能配置lib的路径,但是调用lib对应的dll时是从当前sln2.sln的当前目录中找对应的dll的,而不是在lib同一个目录下找的,所以要特别指定dll所在的路径,最好使用动态调用的方式,即LoadLibrary(),GetProcAddress()的方式调用,指定dll的路径(最好使用相对路径,如两个解决方案在同一个目录下比较好移动)

5.VS相关的宏

_DEBUG:在debug模式下vs默认会产生该宏来标识debug模式,用途:

#ifdef _DEBUG
 hModule = LoadLibrary("..\\testd.dll");
#else
 hModule = LoadLibrary("..\\test.dll");
#endif

TargetDir:即程序运行时所在的目录,如通过LoadLibrary("..\\MMaild.dll");指定的路径就是相对TargetDir而言的,而非针对ProjectDir而言的!!!
ProjectDir:和release、debug目录平级的并且和工程名同名的那个目录即为ProjectDir
慎重!!!

6.不要用release来调试!用debug模式来调试程序!否则看到的内容很可能是错位的!



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值