Visual Studio快捷鍵介紹和高級玩法
既然使用IDE,我想更多的看重的是它的調(diào)試和定位功能。其他的快捷鍵需要自己慢慢探索。微軟不太好的地方是vscode和studio的快捷方式不太一樣。
調(diào)試
?調(diào)試(啟動):F5;?調(diào)試(重新啟動):使用組合鍵“Ctrl+Shift+F5”;?調(diào)試(開始執(zhí)行不調(diào)試):使用組合鍵“Ctrl+F5”;?調(diào)試(逐語句,步入):F11;?調(diào)試(逐過程,步過):F10;?設(shè)置斷點(diǎn):F9。?退出當(dāng)前過程: Shift+F11?編譯: F7
如果遇到庫函數(shù),想看看庫函數(shù)的實(shí)現(xiàn),怎么辦? 舉個例子memset函數(shù),很常見的一個函數(shù)。 (1) F9在memset處設(shè)置斷點(diǎn) (2) Debug運(yùn)行程序 (3) 到達(dá)斷點(diǎn),查看memset的反匯編
memset(&appBaseMem, 0, sizeof(appBaseMem));
00600645 ?push ? ? ? ?0Ch ?
00600647 ?push ? ? ? ?0 ?
00600649 ?lea ? ? ? ? eax,[appBaseMem] ?
0060064C ?push ? ? ? ?eax ?
0060064D ?call ? ? ? ?_memset (024571FCh) ?
00600652 ?add ? ? ? ? esp,0Ch
(4) F11步進(jìn)_memset
024571FC ?jmp ? ? ? ? dword ptr [__imp__memset (1855A5B4h)]
(5)繼續(xù)F11
583750E0 ?mov ? ? ? ? ecx,dword ptr [esp+0Ch] ?
583750E4 ?movzx ? ? ? eax,byte ptr [esp+8] ?
583750E9 ?mov ? ? ? ? edx,edi ?
583750EB ?mov ? ? ? ? edi,dword ptr [esp+4] ?
583750EF ?test ? ? ? ?ecx,ecx ?
583750F1 ?je ? ? ? ? ?58375233 ?
583750F7 ?imul ? ? ? ?eax,eax,1010101h ?
583750FD ?cmp ? ? ? ? ecx,20h ?
58375100 ?jle ? ? ? ? 583751E5 ?
58375106 ?cmp ? ? ? ? ecx,80h ?
5837510C ?jl ? ? ? ? ?5837519D ?
58375112 ?bt ? ? ? ? ?dword ptr ds:[5838731Ch],1 ?
5837511A ?jae ? ? ? ? 58375125 ?
5837511C ?rep stos ? ?byte ptr es:[edi] ?
5837511E ?mov ? ? ? ? eax,dword ptr [esp+4] ?
58375122 ?mov ? ? ? ? edi,edx ?
58375124 ?ret
可以逐步調(diào)試匯編代碼,查看寄存器的值。也可以查看內(nèi)存的值,函數(shù)的調(diào)用堆棧等,超級強(qiáng)大。

從第(4)->第(5)經(jīng)歷了什么,后續(xù)會專門講解,這里涉及到windows下庫函數(shù)定位。
定位
1.轉(zhuǎn)跳到定義:F12;2.查找所有引用:使用組合鍵“Shift+F12”
搜索功能
CTRL+F?全局查找[1]
在光標(biāo)所在行的上面或下面插入一行
?組合鍵“Ctrl+Enter”:在當(dāng)前行的上面插入一個空行;??組合鍵“Ctrl+Shift+Enter”:在當(dāng)前行的下面插入一個空行。
寫在最后
Visual Studio的功能非常強(qiáng)大,要比Android Studio的功能強(qiáng)大很多,幾乎涵蓋了編程的方方面面,甚至調(diào)試windows內(nèi)核也是可以的(本質(zhì)上還是集成windbg),能夠取代windbg。不過Visual Studio體積太大,如非必要,可能用不到這么大的工具,畢竟殺雞不必用牛刀,但是殺牛就要用牛刀了。
公眾號
更多內(nèi)容,歡迎關(guān)注我的微信公眾號:無情劍客。

References
[1]
?全局查找:?https://jingyan.baidu.com/article/2c8c281d9e987e0008252a92.html