起因
成都創(chuàng)新互聯(lián)是一家專注網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷策劃、微信小程序、電子商務(wù)建設(shè)、網(wǎng)絡(luò)推廣、移動(dòng)互聯(lián)開發(fā)、研究、服務(wù)為一體的技術(shù)型公司。公司成立十載以來,已經(jīng)為千余家成都火鍋店設(shè)計(jì)各業(yè)的企業(yè)公司提供互聯(lián)網(wǎng)服務(wù)。現(xiàn)在,服務(wù)的千余家客戶與我們一路同行,見證我們的成長;未來,我們一起分享成功的喜悅。開始學(xué)習(xí)c語言了,一開始想的就是直接裝個(gè)VS就完了,但是一搜都是說vs臃腫啥啥不好,不如用vscode來整,多輕量~于是就網(wǎng)上搜了許多教程開整了,期間也遇到了一些常見的坑,這些集中寫個(gè)文,希望可以幫助到大家。配置文件也是來自其他文章的,我也進(jìn)行了部分修改,后面會(huì)標(biāo)出。
解決方法
我們知道使用vscode對(duì)c/c++進(jìn)行調(diào)試的本質(zhì)是這樣的——1.GCC編譯代碼,2.vscode運(yùn)行編譯出的程序。因此調(diào)試運(yùn)行程序一閃而過的本質(zhì)就是命令行程序運(yùn)行完結(jié)果直接自動(dòng)關(guān)閉了,這和c/c++程序本身也有關(guān)系。
所以對(duì)于這種問題,我們可以很自然而然的想到兩種解決方法:
A.在控制臺(tái)中直接運(yùn)行該程序原理:
我們直接打開cmd/powershell等,輸入對(duì)應(yīng)程序的地址,運(yùn)行即可。我們不想讓他一閃而過的原因是我們需要看到輸出結(jié)果,而不是程序單純的運(yùn)行一下就完事兒了,因此這樣就行了,但是每次都打開cmd似乎也太麻煩了,因此我們也可以在vscode上實(shí)現(xiàn)這個(gè)功能。
前面說過一般我們用vscode調(diào)試c/c++的過程,這里細(xì)化一下,大概是這樣的:vscode先從launch.json中根據(jù)啟動(dòng)參數(shù)進(jìn)行調(diào)試,其中我們配置了preLaunchTask這個(gè)參數(shù)調(diào)用task.json中的任務(wù),一般在task.json中配置一個(gè)任務(wù)調(diào)用gcc進(jìn)行編譯。
因此我們只需要在launch中配置一個(gè)cmd程序來打開我們task.json中任務(wù)編譯的結(jié)果就可以了,但是這種調(diào)用下還是會(huì)出現(xiàn)閃退的問題,因此我們補(bǔ)充一個(gè)pause指令;同時(shí)也發(fā)現(xiàn)了另一個(gè)問題,pause指令的”按任意鍵繼續(xù)……”并沒用自動(dòng)換行,反而和輸出內(nèi)容在一起,于是我們?cè)谘a(bǔ)充一個(gè)“echo.”用作換行符。
因此我們完整的指令是這樣的
/C yourprogram.exe
echo.
pause
解決方法:
如果放到launch.json文件中則是這樣的。
{ "version": "0.2.0", "configurations": [ { "name": "(Windows) Launch", "type": "cppvsdbg", "request": "launch", "program": "cmd", "preLaunchTask": "echo",//這里需要換成你task.json中的任務(wù)名 "args": [ "/C", "${fileDirname}\\${fileBasenameNoExtension}.exe", "&", "echo.", "&", "pause" ], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole":true } ] } ] }