一些Clion使用记录
一些Clion使用记录
编译链设置
在设置“工具链”中可以按需增加不同的编译链
访问越界溢出debug
AddressSanitizer介绍:AddressSanitizer
交的lab在本地运行没问题,助教测试没通过,询问原因——访存越界如下:
但是本地Clion运行又没有报错,于是借助了clion里面打开address sanitizer检查bug。但是自己折腾了挺久都没在windows环境中解决使用address sanitizer的一个报错问题,如下信息提示缺少一个 lasan库
FAILED: XXXXX.exe
cmd.exe /C "cd . && "D:\Program Files\JetBrains\CLion 2022.1\bin\mingw\bin\g++.exe" -fsanitize=address -g -g CMakeFiles/SEP_lab6.dir/boggle2.cpp.obj CMakeFiles/SEP_lab6.dir/lexicon.cpp.obj -o SEP_lab6.exe -Wl,--out-implib,libSEP_lab6.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."
D:\Program Files\JetBrains\CLion 2022.1\bin\mingw\bin/ld.exe: cannot find -lasan
collect2.exe: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
网上很多教程都是在linux环境使用clion结合sanitizer,于是自己在虚拟机中使用clion,找到了当时的bug。出于好奇和偷懒,想在windows的环境使用clion,连接本地wsl使用sanitizer来debug。
具体过程:
- 在工具链中增加“WSL”,见上图
- 在设置Cmake中增加一项使用wsl的配置文件
-
在
CMakeList.txt
文件中增加,设置参考官方Clion手册 Google sanitizers或者Clang配置set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -g")
- 使用新的配置选项开始运行
- 查看报错信息
Clion连接容器开发
还是通过ssh连接容器linux环境,配置方法参考下文
windows配置ssh:https://www.jianshu.com/p/04e64bfcc79b
ubuntu18.04配置ssh:[(87条消息) 如何在Ubuntu上开启SSH服务_枫★曦的博客-CSDN博客_ubuntu开启ssh]
(87条消息) Clion与Docker的C\C++调试环境_不霁何虹丶的博客-CSDN博客_clion docker 虚拟机调试
- 在clion的设置中连接ssh
- 增加编译运行配置
- 切换运行配置
- 运行效果
踩坑:
-
ssh连接密码默认均为系统管理员登录,由于自己各种密码总是忘,大部分时间花在了尝试ssh连接密码和试图修改密码上
-
各种尝试、折腾都是起源于发现确实linux的开发环境更加方便,一开始作业lab有个bug,在windows Clion中直接运行程序正确没发现异常,助教机器运行失败,原因是访存越界,但是clion一开始没报错,助教建议试试address sanitizer,但是自己在windows中使用失败,在虚拟机解决bug后,就开始想把以后的lab、作业都能用clion之类的IDE连接到VM虚拟机、容器或者WSL中运行、开发
-
其实使用VS Code能轻松连接WSL、容器以及(ssh)远程服务器,但是Cmake项目自己比较喜欢Clion的界面和debug的界面,所以折腾了一下
-
下次补上Visual Studio的配置记录和连接开发方法
本文来自博客园,作者:O_fly_O,转载请注明原文链接:https://www.cnblogs.com/world-explorer/p/16849673.html