一些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。

具体过程:

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

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

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

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

  1. 查看报错信息

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

  1. 增加编译运行配置

  1. 切换运行配置

  1. 运行效果

踩坑:

  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的配置记录和连接开发方法

一些Clion使用记录的更多相关文章

  1. windows 下使clion支持c++11操作记录

    最近用上了windows下的clion,发现默认安装的MINGW版本太低,导致所带的gcc版本竟然是3.5的,实在太老了,不支持c++11,于是手动修改了mingw的版本.首先去mingw的官网下载最 ...

  2. Mac使用Clion配置OpenGL

    Mac使用Clion配置OpenGL 之前博主是用Xcode配置的openGL,但后来因为要与非Mac队友合作,于是大家决定统一使用Clion,博主于是再次配置开发环境,这里记录一下 预先准备 Mac ...

  3. Win10下Clion配置opencv3

    本人不想在爱机装一个vs2013或者vs2015这种庞然大物,可是手头要弄一个基于windows的opencv项目,就只好装了个Clion,期间踩了不少坑,记录一下. 参考网址:http://www. ...

  4. 新手如何正确使用CLion之输出hello world

    以前只使用过vc6.0,在用过jetbrain的pycharm后就考虑换个c++的编译器了,第一还是考虑了vs2017但用惯了色彩鲜艳的jb产品后竟然有点不习惯vs,最后还是果断选择了jb的CLion ...

  5. CLion注冊码算法逆向分析实录(纯研究)

    声明 CLion程序版权为jetBrains全部.注冊码授权为jetBrains及其付费用户全部,本篇仅仅从兴趣出发,研究其注冊码生成算法. 不会释出不论什么完整的源码. 网上查了下.已有注冊机,所以 ...

  6. 使用Clion优雅的完全远程自动同步和远程调试c++

    摘要:在linux上用vim写C++的时候,通常用gdb进行调试,不能随心所欲的看代码和跳转代码以及加watch(也有可能是因为我还没有get正确的使用方法).为此我发现Clion可以做到自动同步本场 ...

  7. JVM 源码分析(二):搭建 JDK 8 源码调试环境(Windows 上使用 CLion)

    前言 一.准备源码 二.安装 "Bootstrap JDK" 三.配置编译环境 四.编译与测试 五.安装 CMake 和 GDB 五.准备远程调试 六.开始远程调试 前言 上一篇文 ...

  8. mac下用clion进行sdl2游戏开发de环境搭建

    1. 故事背景 想从unity转unreal了,于是要使用c++进行开发.unreal引擎那么大,每次打开,我的小本都嗡嗡嗡的,想着不如用个轻量一些的引擎先开发吧,核心代码独立出来,到时候如果真要移植 ...

  9. clion结合vcpkg以及GTest的使用

    目录 一.vcpkg简介.下载和使用 1. vcpkg是什么 2. vcpkg下载 3. 使用vcpkg下载第三方库 二.clion结合vcpkg 1. 方法一:使用环境变量 2. 方法二:添加cma ...

  10. git与github(结合clion操作)

    对自己学习git的一个记录,由于刚开始接触git,所以没有对于git做深入解释和说明,仅供参考,如有理解不对的地方或者需要改进的地方敬请指出.   用到的git命令: git init //初始化 g ...

随机推荐

  1. .net Core IsDefined、GetValues、HasFlag 使用

    IsDefined可以用于判断传入的单个值是否属于该枚举 GetValues检索指定枚举中常量值的数组 HasFlag 可以用于判断传入的多个值是否属于该枚举 先来个例子: public enum B ...

  2. 4.9 C++ Boost 命令行解析库

    命令行解析库是一种用于简化处理命令行参数的工具,它可以帮助开发者更方便地解析命令行参数并提供适当的帮助信息.C++语言中,常用的命令行解析库有许多,通过本文的学习,读者可以了解不同的命令行解析库和它们 ...

  3. C#9中使用静态匿名函数

    匿名函数是很早以前在C#编程语言中引入的.尽管匿名功能有很多好处,但它们并不便宜.避免不必要的分配很重要,这就是为什么在C#9中引入静态匿名函数的原因.在C#9中,lambda或匿名方法可以具有静态修 ...

  4. 同时配置github和gitee秘钥

    1.设置用户名和邮箱 git config --global --list 查看全局配置信息 git config --global --list 删除配置:必须删除该设置 git config -- ...

  5. 【链表】链表的合并【经典面试OJ详解】【力扣21,力扣23】超详细的算法教程

    链表的合并 导航小助手 说在前面 题目链接 链表结构 OJ21.合并两个有序链表 题目描述和算法分析 接口的完整实现代码 OJ23.合并K个升序链表 题目描述和算法分析 接口的完整实现代码 尾声 说在 ...

  6. java代码实现自动生成数据库表er图

    最近有同事看到字节跳动产品设计文档里有数据库表er图.就想问问又没有现成的工具也给直接生成一个er图,经查找验证发现并没有.因为现在表关系都是用的逻辑外键而非物理外键约束的,所以像navicat等工具 ...

  7. FDConnection的事务测试讲解。。

    总之用事务的宗旨是: 1.不用嵌套事务EnableNested设置为False 2.事务一定要回滚,避免发生异常的情况下,没有回滚 造成,不可估量的错误. try frmClientDm.MyMain ...

  8. .NET 云原生架构师训练营(模块二 基础巩固 依赖注入)--学习笔记

    2.2.1 核心模块--依赖注入 什么是依赖注入 .NET Core DI 生命周期 服务设计 服务范围检查 ASP.NET Core 依赖注入:https://docs.microsoft.com/ ...

  9. Go 之烧脑的接口

    基本定义 Go 官方对于接口的定义是一句话:An interface type is defined as a set of method signatures. 翻译过来就是,一个接口定义了一组方法 ...

  10. 使用 lspci 和 setpci 调试 PCIe 问题

    lspci 命令和 setpci 命令均为 Linux 发行版中原生可用的命令. 这 2 条命令均可提供多级输出,适合在不同时间点用于查看 PCI 总线上训练的不同组件的功能和状态.其中大部分功能均可 ...