如何设置 vscode 使得调试 c++程序时不会自动闪退 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
CaliInn
V2EX    Visual Studio Code

如何设置 vscode 使得调试 c++程序时不会自动闪退

  •  
  •   CaliInn 2019-04-18 17:10:49 +08:00 11176 次点击
    这是一个创建于 2435 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,我是一名初学者,一直使用devcpp来编写程序,在写完程序后按下f11编译并运行程序会在运行完毕后自动暂停(不会闪退的那种),但是在vscode里面怎么也实现不了,就十分痛苦,如果实在不行能够设置为按f5会自动在终端里运行也可。谢谢各位大佬(ω)

    附图: avatar

    17 条回复    2020-06-25 21:59:37 +08:00
    exch4nge
        1
    exch4nge  
       2019-04-18 17:46:50 +08:00
    main 函数返回那句下断点? 返回前 getchar ?
    CEBBCAT
        2
    CEBBCAT  
       2019-04-18 19:00:09 +08:00 via Android   1
    嘻嘻,看来真是初学者。

    为什么有这个问题:程序执行完既定任务后自然而然就关闭了,devcpp 会出一行 pause 是特殊设计的结果。

    有几个解决方案:
    试试 Jetbrains 公司的 IDE,有学生版,应该会像 Pycharm 一样提供一个内建 console,程序会在 console 里运行,虽然最后也会结束,但输入输出都在 console 里保留了
    程序最后一行加断点
    像楼上说的一样,加个 getchar 一般就行了,不行就俩
    调用系统的 pause 指令

    加油
    agdhole
        3
    agdhole  
       2019-04-18 19:00:53 +08:00 via Android
    pause
    CaliInn
        4
    CaliInn  
    OP
       2019-04-20 00:22:39 +08:00 via iPhone
    @CEBBCAT 他这个如果不能设置 pause 的话能不能设置为调试的时候自动在终端里运行,这样哪怕是退出了不也能完整的看到结果吗
    CEBBCAT
        5
    CEBBCAT  
       2019-04-20 00:24:35 +08:00
    @CaliInn #4 嗯……看不懂你在说什么
    CaliInn
        6
    CaliInn  
    OP
       2019-04-20 00:25:40 +08:00 via iPhone
    @agdhole 我知道可以单独添加代码来实现,但是每个代码都加这个的话还是有些麻烦,毕竟 devcpp 可以实现这样的功能,我就想着能不能对更“现代化的” vscode 添加一些设置来达到类似的效果
    CaliInn
        7
    CaliInn  
    OP
       2019-04-20 00:27:55 +08:00 via iPhone
    @CEBBCAT 就是他 vscode 里面不是集成了 windows powershell 吗,在那里面运行程序哪怕是退出了不也能看到结果吗,我就寻思着能不能进行一些操作让摁 f5 以后,vscode 会自动让程序在集成的 powershell (终端)中运行,不就算是曲线救国了吗
    CaliInn
        8
    CaliInn  
    OP
       2019-04-20 00:28:48 +08:00 via iPhone
    @CEBBCAT 当然,如果能直接设置达到跟 dev cpp 一样的效果最好(我以前好像见到别人实现过,但再回去找那个帖子就怎么也找不到了)
    CEBBCAT
        9
    CEBBCAT  
       2019-04-20 00:29:39 +08:00
    @CaliInn #6 嗯,现在我明白了,可悲的是我没有使用过 VSCode,所以不知道该怎么为 C 程序设定这样的特性。我搜到一个网页,不知道有没有帮助。
    [Integrated Terminal in Visual Studio Code]( https://code.visualstudio.com/docs/editor/integrated-terminal )
    假若没有必要,我还是推荐使用现代化的 IDE。
    CEBBCAT
        10
    CEBBCAT  
       2019-04-20 00:32:15 +08:00
    @CaliInn #8 运行在内建的 powershell 应该是可行的,我猜只需要修改一些『编译后的指令』就好。但我不知道应该具体怎样做
    CaliInn
        11
    CaliInn  
    OP
       2019-04-20 00:35:15 +08:00 via iPhone
    @CEBBCAT 哈哈,我以前只浏览了关于 cpp 编译环境的官方指南,倒还没看过这个。不过你推荐的“现代化的 ide 是指哪些”,我感觉 vscode 应该算是一个吧( sublimetext 算吗)
    CEBBCAT
        12
    CEBBCAT  
       2019-04-20 01:02:51 +08:00   1
    @CaliInn #11 哈哈,你还是需要学会 Google 啊,这个问题留给你当作课后作业吧。送给你一个链接:

    [使用 VS Code 搭建适用于 ACM 练习的 C/C++ 开发环境 - Blessing Studio]( https://blessing.studio/vscode-c-cpp-configuration-for-acm-oj/ )
    CaliInn
        13
    CaliInn  
    OP
       2019-04-20 10:32:56 +08:00
    @CEBBCAT 昨天回复限制触顶了,没回复成功哈哈,不过我感觉这个链接应该就是我想要的!(最近正有在算法竞赛方面进修的意思!)
    Ouepent
        14
    Ouepent  
       2019-09-13 23:34:37 +08:00
    @CaliInn

    我的解决方法是:
    launch.json 下 program 修改为 cmd
    args 添加 "/K", "${fileDirname}/${fileBasenameNoExtension}.exe"

    代码:
    {
    "name": "(Windows) Launch",
    "program": "cmd",
    "args": [
    "/K",
    "${fileDirname}/${fileBasenameNoExtension}.exe"
    ],
    "stopAtEntry": false,
    "cwd": "${workspaceFolder}",
    "environment": [],
    "externalConsole":true
    },
    然后在调试界面选择 (Windows) Launch 按 F5 运行即可 ...

    原理:
    通过 cmd 的参数 "/K" 来实现
    意思是: 是执行完命令后不关闭命令窗口
    Ouepent
        15
    Ouepent  
       2019-09-13 23:39:28 +08:00
    @Ouepent
    添加:
    {
    "name": "(Windows) Launch",
    "type": "cppvsdbg",
    "request": "launch",
    "program": "cmd",
    "args": [
    "/K",
    "${fileDirname}\\${fileBasenameNoExtension}.exe",
    ],
    "stopAtEntry": false,
    "cwd": "${workspaceFolder}",
    "environment": [],
    "externalConsole":true
    },
    测试通过
    Ouepent
        16
    Ouepent  
       2019-09-13 23:43:41 +08:00 via Android
    或者 args 添加 "/C", "${fileDirname}/${fileBasenameNoExtension}.exe", "&", "pause"

    ps:这种方法 pause 不会回车执行 ....
    max3
        17
    max3  
       2020-06-25 21:59:37 +08:00
    @Ouepent 也尝试改成 cmd 了,但是似乎这样调试功能就废了……
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5402 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 03:36 PVG 11:36 LAX 19:36 JFK 22:36
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86