一些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. 21.11 Python 使用CRC图片去重

    使用CRC32还可实现图片去重功能,如下FindRepeatFile函数,运行后通过对所有文件做crc校验并将校验值存储至CatalogueDict字典内,接着依次提取CRC特征值并将其存储至Cata ...

  2. LyScript 验证PE程序开启的保护

    有些漏洞利用代码需要在某个保护模式被关闭的情况下才可以利用成功,在此之前需要得到程序开启了何种保护方式.验证其实有很多方法,其原理是读入PE文件头部结构,找到OPTIONAL_HEADER.DllCh ...

  3. elasticsearch源码debug

    一.下载源代码 直接用idea下载代码https://github.com/elastic/elasticsearch.git 切换到特定版本的分支:比如7.17,之后idea会自己加上Run/Deb ...

  4. [转载自jayant97] 详解Zephyr设备树(DeviceTree)与驱动模型

    原文链接:详解Zephyr设备树(DeviceTree)与驱动模型 1. 前言 ​ Nordic最新的开发包NCS(nRF Connect SDK)相对于原来的nRF5 SDK来说,最大的更新莫过于采 ...

  5. 《ASP.NET Core 微服务实战》-- 读书笔记(第12章)

    第 12 章 设计汇总 微服务开发并不是要学习 C#.Java 或者 Go 编程--而是要学习如何开发应用以适应并充分利用弹性伸缩环境的优势,它们对托管环境没有偏好,并能瞬间启停 换句话说,我们要学习 ...

  6. 机器学习基础01DAY

    数据的特征抽取 现实世界中多数特征都不是连续变量,比如分类.文字.图像等,为了对非连续变量做特征表述,需要对这些特征做数学化表述,因此就用到了特征提取. sklearn.feature_extract ...

  7. NC14522 珂朵莉的数列

    题目链接 题目 题目描述 珂朵莉给了你一个序列,有 \(\frac{n\times(n+1)}2\) 个子区间,求出她们各自的逆序对个数,然后加起来输出 输入描述 第一行一个数 n 表示这个序列 a ...

  8. Atom N2600, N2800 安装 Ubuntu22.04 卡住的问题处理

    问题描述 Atom N2600, N2800 的某些旧型号机器, 安装 Ubuntu 时在安装界面选择安装后, 启动过程中会卡住, 或者数秒即黑屏, 再无反应. 这个问题对于Debian系的其他发行版 ...

  9. 使用spring boot jpa进行增删改查

    项目地址:https://gitee.com/indexman/spring_boot_in_action 编写实体类User package com.laoxu.springboot.entity; ...

  10. java处理json类型数据--阿里巴巴fastjson api常用方法实战

    fastjson介绍 最近工作上经常需要解析json类型数据以及java对象到json类型的互转,特地研究了下阿里巴巴的fastjson,这个是国内用的 比较多的json转换api,还有其他的入jac ...