当前位置: 首页 > news >正文

网站模板库软件软件技术就业前景怎么样

网站模板库软件,软件技术就业前景怎么样,免费服务器领取,wordpress文章中外链Visual Studio被称为是宇宙最强IDE#xff0c;以前开发Linux C/C服务器程序#xff0c;基本上都是在Windows上使用VS编写跨平台的C/C代码#xff0c;然后先在VS中编译、链接、调试#xff0c;然后在Linux下编译、链接#xff0c;再针对Linux下的特定代码进行调试。后面Vis…Visual Studio被称为是宇宙最强IDE以前开发Linux C/C服务器程序基本上都是在Windows上使用VS编写跨平台的C/C代码然后先在VS中编译、链接、调试然后在Linux下编译、链接再针对Linux下的特定代码进行调试。后面VisualGDB的出现终于有所改变了参见笔者之前的博文Windows下开发Linux C/C项目。 也许是VisualGDB的推波助澜也许是微软CEO纳德拉的拥抱开源战略让VS也更加开放对开发者越来越友好。 以前VS只支持使用微软自己的开发工具进行Windows程序的开发到VS2008的时候可以安装VisualGDB插件使用GNU的编译套件进行Windows程序的开发也可以通过SSH远程连接到Linux/MacOS系统进行开发再到VS2017支持火热的CMake系统可以直接支持SSH远程连接到Linux/MacOS系统进行开发笔者没用过VS2017、VS2019直接从VS2015跳到VS2022到目前的VS2022更是对非微软系的工具包括GNU的工具和LLVM的工具支持越来越好虽然不有不如意的地方但会越来越好。 以前介绍过VS2022与MinGW的本地开发方式参见系列博文 Visual Studio 2022使用MinGW来编译调试C/C程序 Visual Studio 2022 CMakeMinGWGDB 调试目标程序 Visual Studio 2022使用CMakeMinGWClangLLDB作为开发环境 本文就介绍一下VS2022使用SSH远程连接到Linux/MacOS进行C/C的远程开发方式。 本文链接https://blog.csdn.net/witton/article/details/132297160 一、环境 先介绍一下环境Windows环境为Win10VS2022版本为17.7远程系统为Ubuntu 22.04/CentOS7/MacOS catalinaLinux下又涉及有容器中的Linux。 1.系统准备 关于Linux系统的安装配置以及相应编译、链接、调试器的安装可以参考博文 详细安装Ubuntu 21.10 配置与管理Ubuntu 21.10 搭建ubuntu容器内C/C开发调试环境 如果使用容器一定要在创建podman容器时添加参数--cap-addSYS_PTRACE创建docker容器时添加参数--cap-addSYS_PTRACE --security-opt seccompunconfined否则不能使用调试器。 如果是SSH远程连接到macOS开发可以看看博文 SSH远程连接MacOS catalina并进行终端颜色配置 2.开发套件准备 关于GNU套件以及LLVM套件的安装如果要使用C20标准强烈建议使用源码安装最新版本的GCC和最新版本的Clang如果觉得系统源中已有的版本够用就可以不用源码安装直接使用系统源中的版本安装即可。 VS包括VSCode要使用LLDB调试器进行源码调试都必须要有lldb-mi所以必须要安装lldb-mi博文VSCode远程连接Ubuntu使用LLDB调试程序中有介绍lldb-mi的安装。 macOS系统如果安装过VSCode则可以直接使用VSCode中安装的lldb-mi将之软链接到/usr/local/bin即可。 这里需要注意的一点是lldb-mi最好与lldb的安装目录一致一般为/usr/local/bin。如果是源码安装的建议都安装在/usr/local/则都在/usr/local/bin目录下。 如果是使用的系统源的LLDB包安装的比如ubuntu 22.04中安装的lldb-15它默认是安装在/usr/lib/llvm-15/bin下则需要将之添加到PATH路径中并建立一个lldb-server具体版本号的符号链接到lldb-mi的安装目录下否则会报错unable to locate lldb-server-XX.X.X 比如ubuntu 22.04中安装的lldb-15具体版本号为15.0.7lldb-mi安装在/usr/local/bin使用下面命令建立符号链接 ln -s /usr/lib/llvm-15/bin/lldb-server-15.0.7 /usr/local/bin/lldb-server-15.0.7lldb-mi README中有提到可以设置环境变量LLDB_DEBUGSERVER_PATH但是笔者试了一下没用。 二、项目实例 使用VS2022创建一个CMake项目t默认会创建四个文件t.ht.cppCMakeLists.txt和CMakePresets.json并且默认是本地计算机的x64 Debug配置。CMakePresets.json是CMake的预设配置它定义了以下几种配置 本地计算机也就是Windows的x64 Debug,x64 Release,x86 Debug,x86 Release远程Linux的Linux Debug远程MacOS的macOS Debug 是否启用CMake预设配置文件可以通过菜单工具/选项/CMake来选择 1.使用CMake预设配置文件 如果VS启用了CMake预设配置文件则可以在本地计算机下拉框中选择不同的连接可以看到不同的预设配置 远程连接可以通过菜单工具/选项/跨平台/连接管理器来管理最方便的是通过前面本地计算机的下拉列表中选择管理连接直接转到连接管理器页面 1.1 添加预设配置 CMakePresets.json中仅定义了几种预设值比如Linux下仅定义了Linux Debug配置默认是使用GCC编译器如果想要使用Clang编译器则需要添加预设配置。在CMakePresets.json右键菜单中选择“添加配置” 再选择“Linux Debug”添加预配置 默认会添加如下配置 {name: linux-debug2,displayName: Linux Debug,description: 面向适用于 Linux 的 Windows 子系统(WSL)或远程 Linux 系统。,generator: Ninja,binaryDir: ${sourceDir}/out/build/${presetName},installDir: ${sourceDir}/out/install/${presetName},cacheVariables: {CMAKE_BUILD_TYPE: Debug},condition: {type: equals,lhs: ${hostSystemName},rhs: Linux},vendor: {microsoft.com/VisualStudioRemoteSettings/CMake/1.0: {sourceDir: $env{HOME}/.vs/$ms{projectDirName}}} }可以改名为linux-clang-debug显示名为Linux Clang Debug然后添加cacheVariables变量设置C/C编译器即可 {name: linux-clang-debug,displayName: Linux Clang Debug,description: Clang,generator: Ninja,binaryDir: ${sourceDir}/out/build/${presetName},installDir: ${sourceDir}/out/install/${presetName},cacheVariables: {CMAKE_BUILD_TYPE: Debug,CMAKE_C_COMPILER: clang,CMAKE_CXX_COMPILER: clang},condition: {type: equals,lhs: ${hostSystemName},rhs: Linux},vendor: {microsoft.com/VisualStudioRemoteSettings/CMake/1.0: {sourceDir: $env{HOME}/.vs/$ms{projectDirName}}} }1.2 Ubuntu 22.04/CentOS7配置 目前VS2022连接Ubuntu系统进行调试有性能问题启动调试器非常慢不管是使用GDB还是LLDB都非常慢。笔者已经反馈给开发者目前还在考虑修复中。连接CentOS7进行远程调试没这样的问题。 VS默认情况下是使用GDB进行调试的 使用GDB进行调试有一个不方便的地方就是函数嵌套调用 #include iostream using namespace std;int f() {return 1; }void foo(int i) {cout i endl; }int main() {foo(f());cout Hello CMake. endl;return 0; }如果调试时在f函数的}按F10执行next命令则会跳过foo函数直接到下一行代码了如果想调试foo函数就必须按F11执行step命令。这点习惯与VS的调试器习惯不一样而LLDB调试器与VS的习惯一致。如果知道如何修改GDB的这一行为的读者可以下方留言。 GDB调试器毕竟是老牌调试器使用很广泛支持得也比较好VS默认已经配置并处理好GDB调试器了所以使用GDB调试器基本上是一帆风顺。 但如果要使用LLDB调试器就需要自行添加配置而且预置的LLDB配置也不完善有许多麻烦事而且LLDB使用了许多新技术注定是一条曲折之路不过笔者都为大家踩过坑了大家只需要照搬即可 得到launch.vs.json配置如下 {version: 0.2.1,defaults: {},configurations: [{type: cppgdb,name: CMakeLists.txt,project: CMakeLists.txt,projectTarget: ,comment: 了解如何配置远程调试。有关详细信息请参阅 http://aka.ms/vslinuxdebug,debuggerConfiguration: gdb,MIMode: lldb,args: [],env: {}}] }将projectTarget设置为目标t此时会有CMakeList.txt选项了 原以为就这样简单配置就可以使用LLDB调试器了毕竟是使用VS的向导生成的。还是想得太简单启动报错 Unable to start debugging. Unexpected LLDB output from command -interpreter-exec console settings set target.env-vars ASAN_OPTIONS\detect_leaks0\. Undefined command: settings. Try Help. VS并没有默认启动lldb-mi来调试需要指定gdbPath默认为 /usr/bin/gdb可以查看文档http://aka.ms/vslinuxdebug这里需要设置为lldb-mi的路径/usr/local/bin/lldb-mi。再次启动就一直卡在Initializing Debugger界面。 笔者在网上查了很多资料也没查到相应的配置咨询了开发者才知道原来还需要加一个preDebugCommand:echo看来LLDB的配置不是一般的复杂啊暴露了太多细节给开发者了不知道VS与Linux的交互细节根本就不知道需要配置这个为啥需要这条指令。 此时如果连接的是CentOS7系统会报如下错误 personality set failed: Function not implemented 前面笔者写了一文进行分析解决解决lldb调试时可能出现的personality set failed: Function not implemented CentOS7由于系统glibc较老没实现personality函数但Ubuntu 22.04的glibc是实现了的没此问题。 如果是连接的容器中的Ubuntu 22.04则会报如下错误 A packet returned an error: 8 实体机以及虚拟机中的Ubuntu 22.04没此问题。 其实这两个问题都是LLDB禁用了ASLR导致需要使用settings set target.disable-aslr 0来关闭禁用。 完整配置如下 {version: 0.2.1,defaults: {},configurations: [{type: cppgdb,name: t.lldb,project: CMakeLists.txt,projectTarget: t,comment: 了解如何配置远程调试。有关详细信息请参阅 http://aka.ms/vslinuxdebug,debuggerConfiguration: gdb,MIMode: lldb,gdbPath: /usr/local/bin/lldb-mi,preDebugCommand: echo,args: [],env: {},setupCommands: [{text: settings set target.disable-aslr 0}]}] }至此终于可以使用LLDB调试程序了。 如果想要在命令行中使用LLDB进行调试可以创建一个~/.lldbinit文件添加内容 settings set target.disable-aslr 0即LLDB启动时会自动执行里面的命令。 但VS中不行VS是启动的lldb-mi再启动的lldb-server。 1.3 macOS配置 macOS的默认配置如下 {name: macos-debug,displayName: macOS Debug,generator: Ninja,binaryDir: ${sourceDir}/out/build/${presetName},installDir: ${sourceDir}/out/install/${presetName},cacheVariables: {CMAKE_BUILD_TYPE: Debug},condition: {type: equals,lhs: ${hostSystemName},rhs: Darwin},vendor: {microsoft.com/VisualStudioRemoteSettings/CMake/1.0: {sourceDir: $env{HOME}/.vs/$ms{projectDirName}}} }使用默认的macOS配置会有一点问题就是找不到cmake如果没安装ninja的话也会找不到ninja VS在macOS系统应该是使用whereis来查找程序的可以看到whereis是没有找到cmake的而which是可以正确查到cmake程序的VS为啥不在whereis没找到时再用which查找一下或者直接优先使用which查找 可以查看whereis的man手册原来在macOS系统是使用sysctl命令获取的user.cs_path路径来查找程序的。 通过sysctl -a | grep user可以看到whereis的搜索路径为/usr/bin:/bin:/usr/sbin:/sbin没有/usr/local/bin所以找不到。 看到这里可能会想修改这个值但是通过查看man sysctl发现这个值根本不能修改为no的都不能修改 这点与Linux不一样Linux下的whereis以及which都是可以通过PATH路径搜索的。 可能会想到像Linux一样在/usr/bin下创建一个cmake的符号链接由于MacOS系统/usr/bin不可修改也不行。 只好修改cmake配置了 {name: macos-debug,displayName: macOS Debug,cmakeExecutable: /usr/local/bin/cmake, // 指定cmake的绝对路径generator: Unix Makefiles, // 如果没安装Ninja就改为Unix MakefilesbinaryDir: ${sourceDir}/out/build/${presetName},installDir: ${sourceDir}/out/install/${presetName},cacheVariables: {CMAKE_BUILD_TYPE: Debug},condition: {type: equals,lhs: ${hostSystemName},rhs: Darwin},vendor: {microsoft.com/VisualStudioRemoteSettings/CMake/1.0: {sourceDir: $env{HOME}/.vs/$ms{projectDirName}}} }此时开始调试程序还可能会遇到如下错误 developer mode is not enabled on this machine and this is a non-interactive debug session 这是macOS系统还没打开开发者模式使用下面的命令打开 sudo DevToolsSecurity enable2.不使用CMake预设配置文件 如果不使用预设配置文件则变更本地计算机下拉列表中的连接时不会自动变更后面的配置即不会根据远程连接自动变更配置。默认只有本地计算机的x64-Debug配置。要想使用其它配置需要手动添加选择管理配置就会创建一个CMakeSetings.json文件并进入CMakeSetings.json的编辑界面如果没有使用文本编辑器打开的话 选择添加配置则会弹出如下界面可以选择使用GCC还是Clang的Debug或者Release配置 远程计算机中可以指定远程连接也可以使用${defaultRemoteMachineName}这样会使用连接管理器中选择的默认连接即列表中标识为默认的连接 前面选择是使用GCC还是Clang的时候如果选错了或者想更改可以通过修改工具集来改变 CMake生成器默认为Ninja如果远程系统没安装则可以选择Unix MakefilesIntelliSense模式默认是没有选择任何内容的这里根据是64位系统还是32位系统选择linux-gcc-x64或者linux-gcc-x86 目前使用GCC工具集的智能提示不是很完善比如boost库笔者使用的1.82版本中asio相关的的提示有问题也不知道是GCC的问题还是VS的问题。推荐使用Clang工具集Clang工具集没此问题。 写得非常详细关于LLDB的部分是笔者的踩坑经历希望对大家有帮助 欢迎点赞收藏。转载请注明出处
http://www.dnsts.com.cn/news/228572.html

相关文章:

  • 四川住建厅官方网站的网址如何做好线上推广和引流
  • 宁波制作网站软件太原做网站
  • 绵阳个人网站建设品牌网站设计制作公司
  • 上海网站备案号查询互联网+大赛
  • 工会网站建设东营市
  • 潍坊网站排名公司wordpress主题防止破解
  • 网站建设要经历哪些步骤天津建筑工程信息平台
  • 宏润建设集团有限公司网站网站营销
  • 家政服务网站模板seo推广的步骤
  • 建设装饰网站wordpress对比phpcms
  • 企业在建设银行网站怎么发工资制作地图的网站
  • 注册网站用于跳转虚拟货币网站违法张戈博客wordpress主题
  • 网站开发工程师职业广州seo外包
  • 网站建设费 科目广州最新发布最新
  • 网站建设方网站发布信息的基本流程
  • 大型门户网站都有怎样开电商线上店
  • 装修公司招聘网站中国网站优化哪家好
  • 学做网站 空间 域名做市场调研的网站
  • 网站空间到期了做网站html和asp
  • nas服务器可以做网站吗怎么在ps做网站首页
  • 陆良县住房和城乡建设局网站门户网站的建设成果
  • 国外网站设计风格wordpress页脚计时
  • 网站建设与运营的论文江西网站建设推广
  • 网站建设与维护心得体会链接搜索引擎
  • 搭建门户网站费用是多少济南网络推广公司哪家好
  • 企业网站制作与维护网站框架搭建设计
  • 装饰公司手机网站建设网络技术开发有限公司
  • 佛山专业做网站的公司苏州seo排名优化
  • 百度云服务器做asp网站wordpress 无效的文章类型
  • php购物网站开发公司名字大全参考2022