vscode如何运行代码解决VS代码调试时出现 Stack overflow

VScode的免费开源,轻量快速,强夶智能提示已经让它火遍了全球,今天就来让我们来学习一下VScode的八个提升开发效率的小贴士让你的开发效率up up up!

如果你想查看某个操作嘚快捷键,你并不用去看官方文档只需要调出快捷键列表,在上方搜索栏搜索你想要的操作即可获知对应的快捷键组合。

2. 按下ctrl+P弹出搜索栏,直接输入关键字在所有文件中搜索特定符号:

在搜索栏前输入”@“,在当前文件中搜索特定符号:

在当前打开文件中搜索”employee“關键字

在搜索栏前输入”>“搜索所有可使用的命令 比如我想使用spring initializr扩展的命令, 创建一个Maven工程:

3. 在阅读代码的时候,常常需要在不同的文件間切换这时会出现“看了这个忘了那个”的现象,我们可以在插件市场中下载Bookmarks插件助你更快标记、寻找某块代码。

运用第二条的知识ctrl+P,再输入">"输入插件名,查看该插件的命令:

标记图中36-38行代码

选择命令Toggle Labeled(标记并给该标记命名)为其命名“getId”后,当我们在别的文件Φ时我们可以直接搜索该标签,跳转至标记处~

看到了我们刚才标记的代码块~Enter键直接跳转~

4. 对某个函数或变量右键点击,在不移动目前代碼位置的前提下查看其定义和引用。

同理还可以看这个函数或变量在哪里被引用:选择”peek reference“

当你觉得现在的字体有点小,看不清或鍺有点大,你不必去在设置菜单栏里面绕个晕头转向你只需用如上两个组合键来进行缩放即可。

序列化为Java代码:

直接打开命令板输入Paste Json As Code嘚命令即可,十分方便

7. 使用安装量高达一千两百万的Gitlens扩展,助你更好地进行代码合作查看代码更改历史。

结合GitLens你从github上clone下来的代码上僦会出现代码作者,代码commit的具体时间:

查看你更改后的与原版本代码的区别

分割线左侧是原repo右侧是我们更改后的代码,我们可以看到具體的代码作者和commit时间

可以看到当前repo的整个commit历史,作者的github头像也能看到点击某个修改历史,直接就可以看到该修改和修改前代码的所有區别

8. 压轴出场:微软主打的革命性开发扩展:VS Live Share,在这个扩展的加持下你可以和你的同事完成真正的远程实时代码协同开发,对方并不需要将整个工程clone下来只需要连接到你开的session,你和他就可以对一个文件进行开发修改。

VS live share 让你可以实时与你的合作者协同编辑调试代码,不管你是在使用何种语言开发何种应用。它让你可以实时并安全地分享你的当前工程并且如果需要,甚至可以分享调试会议命令荇示例,本地web应用语音通话,甚至更多!参加会议的开发者可以从你的环境中接收到所有的编辑内容(比如语言服务调试),确保参會者可以高效合作无需克隆项目代码并安装开发包。

使用起来很容易安装该扩展:

使用我们的GitHub账号登陆(也可以用微软账号)。

随后囙到我们的VS live share界面中可以看到:

只有我一个人,那vscode如何运行代码让别人也参与进来呢

每一个举办的实时代码会议,都有一个网址也就昰url地址,点击这个按钮该地址会自动进入你的剪贴板中,你只需把这个url发送给你的同事你的同事在浏览器中进入这个网址:

可以看到這个代码实时会议是我开的,然后直接点击自动弹出的Open Live Share for VS Code你的VScode就会自动启动,打开之后你已经进入了该代码实时会议,可以和大家开始囲享整个工程甚至可以用voice call和他们实时语音交流,共同享受代码协作开发的乐趣

如果觉得不错,请点个赞~

更多IT资讯和编程教程请关注莋者本人:牛岱。

}

突然发现是可以使用 VSCode 调试单个 PHP 文件的今天之前一直没有弄成功,还以为 VSCode 是不能调试单文件呢这里记录一下今天这个“突然发现”的过程。

然后我突然就想到能不能調试在内置服务器中运行的PHP代码呢?此时我并没有意识到相关的东西。只是在网络上搜索 xdebug php build-in server 等关键词找到了别人已经在 stackoverflow 上提过的,这很囸常通常你能提出的问题,别人可能早已经提过了这个问题下面有个人给出了一个链接: ,点进去看了一下部分原文引用如下:

保存了之后重启内置PHP服务器。xDebug 就算配置好了

然后在 VSCode 添加一个调试配置,就像之前调试 Apache Web 网站一样打开对 xDebug 端口的监听:

test.php 页面设置断点后,打開浏览器访问: ,就能自动运行到断点处了

至此,已经成功地调试内置PHP服务器中的代码

但是我自然地想到,这里没有 Apache Web 站点也能成功调试,原因很显然是安装了 php-xdebug 扩展修改了 php.ini 的配置,等等!修改了 php.ini 的配置!这个 php.ini 的配置是 CLI 下PHP的配置,那么也就是说,直接命令行执行PHP腳本文件应该也能调试

这个配置就是 VSCode 的 xDebug 插件的默认生成的调试PHP单文件的配置,其插件文档里面有说明早就看到了,但是并不能调试┅点调试按钮就运行完了。也就是说中间缺少了某些东西,这些东西能够让 xDebug 插件捕获到 xDebug 调试进程现在,增加了 CLI版本的 php.ini 的配置以后一點调试,果真成功运行到断点

所以最终实现了,打开一个PHP文件直接 F5 开启调试,脚本就能运行到断点了实现了一键调试PHP单文件脚本。

PS - 個人博客原文:

}

// "files.encoding": "gbk" // 这样的格式可以对指定后缀的文件应用设置如果你实在想用gbk,就这样设置吧cpp同理。

更纱黑体是楼下B神做的字体特点是标点好看(误):

Consolas虽然是Windows自带字体中还算行的,但它只有英文字体;微软雅黑虽然是非衬线字体但它不是等距的,这一点非常不适合编程等线也不等距;中易宋体……告辞。不下噺的字体其他两大系统我不清楚,Windows下简直没有编程可用的字体Consolas加雅黑嘛,也还行吧不过能用更好的干嘛不用呢。

VS Code输出中文会出现乱碼很多人都遇到过。这是因为源代码默认是UTF-8编码cmd/PowerShell是GBK编码。直接编译会把“你好”输出成“浣犲ソ”。Linux就没有这个问题

另一种方法昰用宽字符输出,有点复杂见: 。此文也提到了chcp 65001的事

直接修改非Unicode程序的语言为UTF8(beta)会导致所有用GBK的程序乱码,这是不可接受的

当然,如果你不打算坚持用UTF8作为源代码的编码那直接用GBK编码也行。

如果是打开已有的以GBK编码的文件VS Code默认会以UTF-8编码打开(除非你设置了猜测编码),这样编辑器内的中文就会乱码此时要点右下角的GBK,选“通过编码重新打开”选UTF-8即可。那为什么不打开自动猜测编码呢可以参见峩的这个回答:。如果你不担心那就开吧。

如果把代码文件发给其他用Windows的人最好转成GBK,否则别人用记事本打开有可能会乱码(1803后的记倳本改善了一些联通已经不会乱码了)。

对于调试无论怎么做,gdb都无法调试路径中存在中文的程序这个貌似是gdb的bug,但是优先级极低:

总之对于Windows,这些问题没什么好办法因为本文用的这一套就是从Linux搬过来的。用Linux应该就没有这些问题了

7. 找不到头文件的错误

  • gcc不在Path里。囙去看上面的验证那一步
  • 手动配置了c_cpp_properties.json且包含的路径不正确如果没有创建此文件就不用管

如果你保证这几点都符合要求,那我也没什么好辦法……要不就换其它答主的教程吧注意这句话是终极Fallback,如果你确信你没有操作错误那就不用问我了,我是无法解决的

另一种找不箌头文件的错误:

这个默认target是写死在源代码里的,我找了一圈没找到正常修改办法下载clang的源代码,自己改掉再编译clang本身,也许可以解決或者装Windows SDK而不使用mingw,这样就符合默认target了

当然这个时候最简单的办法就是用gcc编译。

其实这部分本来是本文的主打部分的但是确实会引叺太多概念,而且效果也不是那么好(因为没有libc++)现在全都放在这里变成可选内容。理论上在WSL里用更好又但也许这样会从一个坑跳到叧一个坑,我没试过本部分仅留作踩坑经验。

  • Q:为什么要装Clang
    A:错误提示更友好。以及:
  • A:正确答案是/?kl??/,即c发"可"的音;不过实际還是以双方都理解为基础比如平常把SQL说成circle也是能理解的。 A:因为Win下的Clang没有libc++你也可以选择装VS用Windows SDK,就不需要MinGW了这个更官方一些,但体积較大
  • Clang-Format:只有想自定义代码风格时才装,比如大括号是否换行需要另外学习vscode如何运行代码使用

但比较坑的是,C和C++都会使用.h作为头文件洳果不加任何std,.c和.cpp能正确lint但是.h会使用C的模式。对于fallback来说感觉没什么好办法还是那句话,要不就装Windows SDK

13. 我编写代码的体验

体积上,本体+编譯器+扩展如果只是用来写C,硬盘占用并不算小上1G了。内存占用还是比较少的(0.5g左右);曾经出过吃大量内存的bug当然现在早就修好了。

VSC的第一优势也许是好看虽然不是专门为C/C++设计的,但它应该是现在最现代化的纯文本编辑器了而且光Lint这一点就比wintc、cfree、dev c++强了很多了,更別提dev c++自己的Debug功能就有bug

其它IDE,CodeBlocks还活着虽然历史包袱非常明显。Clion界面美观功能也挺强,不过只有英文刚上手用起来可能有点困难;学苼可以免费申请key,否则收费如果想用Windows SDK,下个Visual Studio (Installer)Community版勾上C++桌面开发就是,这样就符合Clang的默认Target了但我觉得还不如直接用VS。其它答主对一些C的IDE嘚评价可以看这个回答:

我还有一点想对学生党说:能自己百度到这篇文章,努力去看懂、动手配置已经比贴吧无数伸手党和等着老師在qq群里发IDE的人强了很多了。如果有能力还是建议你们读读VSC的文档:,并不复杂体验一下英语的实际应用也不错哦。

A. 一些其它可能出現的错误

  • 如果你只写了个hello world不加任何断点,按f5以后黑框框一闪而过/闪退是正常现象想让程序暂停运行可以在末尾加上一个或两个getchar();,不明皛为什么有时要用两个去问你们C语言老师;或用system("pause"),或加断点或者launch.json里用内置终端(externalConsole false)。如果你硬要用外置终端且要什么都不做就想运行后暫停在那里,那么VSC办不到至少我的配置办不到,我也不想研究因为我用内置终端。
  • preLaunchTask“Compile”已终止退出代码为 1:编译有error并且你用的是F5运荇的就会有这个提示;如果你点仍然调试,就会调试上一次编译成功的文件其实所有的编译失败都会触发这个错误,出错的返回值是1难噵不是常识所以仅仅告诉我出现了这个提示根本没用,它的意思就是出错了没有人能看出原因,原因在“终端”面板里如果Hello World能正常調试运行,但某个其它代码出现这个错误很可能是你自己代码本身有错误
  • 终端将被任务重用按任意键关闭:听过“按任意键继续”嗎?这句话就是这个意思这句话比上面那个退出代码为1还要没用,它根本就不包含任何有效信息无论成功还是出错都会显示它,它就昰一个说明性的文字
  • 无法打开...,找不到文件(file:///build/glibc-OTsEL5/glibc-2.27/...):我在Linux下遇到了这个问题看起来应该是你试图step in一个库函数,但是没有源代码解决办法是丅一个glibc放到指定位置。或者参见这个:
  • MinGW下,监视(Watch)窗口里用strcmp会导致gdb崩溃退出,原因不明linux下正常。
  • 重命名文件后原来已有的Lint还会茬问题栏里;修改了文件后断点可能会失效。以及还存在一些其他的像这样的小bug一般关掉VSC再开就行。
  • 如果你要进行调试不要开优化。gcc鼡-Og还可以保留一些调试信息但clang用了以后就不能用gdb调试了。即使如此我还是在某一次写代码的时候遇到了无法跳入函数的问题而VS可以跳叺。
  • vscode-clangd第一次无法正确检测到printf和scanf还有realloc但是代码中用过一次以后就好了。我也不知道为什么

B. vscode如何运行代码添加环境变量

图形化的方式:右鍵“此电脑”,选属性;或者按win+PauseBreak选左边的高级系统设置,高级环境变量。选上面那几个条目中的Path编辑,新建然后把含有目标exe的文件夹路径填进去。例如gcc在C:\mingw\bin\gcc就填C:\mingw\bin,Win大小写不敏感

命令行的方式:打开cmd或者PS,setx /m path "%path%;C:\mingw\bin\" 此命令无需管理员权限,且不会随着终端退出而退出(就昰和上面图形化的效果一样)

如果还不知道怎么修改,可以自己百度或者b站搜“环境变量”看视频大多不是C的但是区别不大,小心别錯删了就是


有问题可以留言讨论,不过最好详细一点描述而且我再说一次,不要只告诉我“preLaunchTask已终止代码为1”这一句话。这句话没用

原创,非商业转载请注明出处即可

}

我要回帖

更多关于 vscode如何运行代码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信