一些Clion使用记录

一些Clion使用记录

编译链设置

image

在设置“工具链”中可以按需增加不同的编译链

访问越界溢出debug

AddressSanitizer介绍:AddressSanitizer

交的lab在本地运行没问题,助教测试没通过,询问原因——访存越界如下:
image
但是本地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。

具体过程:

  1. 在工具链中增加“WSL”,见上图
  2. 在设置Cmake中增加一项使用wsl的配置文件

image

  1. CMakeList.txt文件中增加,设置参考官方Clion手册 Google sanitizers或者Clang配置

    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -g")
    

image

  1. 使用新的配置选项开始运行

image

  1. 查看报错信息

image

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 虚拟机调试

  1. 在clion的设置中连接ssh

image

  1. 增加编译运行配置

image

  1. 切换运行配置

image

  1. 运行效果

image

踩坑:

  1. ssh连接密码默认均为系统管理员登录,由于自己各种密码总是忘,大部分时间花在了尝试ssh连接密码和试图修改密码上

  2. 各种尝试、折腾都是起源于发现确实linux的开发环境更加方便,一开始作业lab有个bug,在windows Clion中直接运行程序正确没发现异常,助教机器运行失败,原因是访存越界,但是clion一开始没报错,助教建议试试address sanitizer,但是自己在windows中使用失败,在虚拟机解决bug后,就开始想把以后的lab、作业都能用clion之类的IDE连接到VM虚拟机、容器或者WSL中运行、开发

  3. 其实使用VS Code能轻松连接WSL、容器以及(ssh)远程服务器,但是Cmake项目自己比较喜欢Clion的界面和debug的界面,所以折腾了一下

  4. 下次补上Visual Studio的配置记录和连接开发方法

posted @ 2022-11-02 00:16  O_fly_O  阅读(490)  评论(0编辑  收藏  举报