首页 > 编程语言 >利用Visual Studio调试WSL下的C++工程

利用Visual Studio调试WSL下的C++工程

时间:2024-10-17 16:25:52浏览次数:8  
标签:x86 gnu WSL C++ Symbols Visual 64 linux loaded

这里写了一个基于Qt5的控制台的小代码:

#include <QCoreApplication>
#include <QDebug>

int main(int argc, char** argv)
{
	QCoreApplication a(argc, argv);

    qDebug() << "Application started";
    int testValue = 42;
    qDebug() << "Test value:" << testValue;

	return a.exec();
}

工程使用了CMake工程:

cmake_minimum_required(VERSION 3.15)

project(WSLwithVS)

set(CMAKE_AUTOMOC ON)

find_package(QT NAMES Qt5 Qt6)
find_package(Qt${QT_VERSION_MAJOR} CONFIG COMPONENTS Core REQUIRED)

add_executable(WSLwithVS main.cpp)

target_link_libraries(WSLwithVS Qt${QT_VERSION_MAJOR}::Core)

确保WSL里面有编译器、Ninja、gdb、qtbase5-dev和常用的中文字体fonts-wqy-zenhei、fonts-wqy-microhei

sudo apt install gcc g++ ninja-build cmake gdb qtbase5-dev fonts-wqy-zenhei fonts-wqy-microhei

开始编译调试

  1. 右键点击CMakeLists.txt文件,选择配置"WSLwithVS"

    我这里遇到一点小问题在1> CMake 生成完毕列出现了错误,我暂时的解决方法:

    cd ~/.vs/WSLwithVS
    ninja -C out/build/
    
  2. 在使用ninjia生成完毕后重复步骤1,输出结果如下

    1> 已为配置“Qt-Debug”启动 CMake 生成。
    1> 在 /usr/bin/cmake 上找到 cmake 可执行文件。
    1> /usr/bin/cmake -G "Ninja"   -DCMAKE_BUILD_TYPE:STRING="Debug" -DCMAKE_CXX_FLAGS:STRING="-DQT_QML_DEBUG"   /home/lxy/.vs/WSLwithVS/CMakeLists.txt;
    1> [CMake] -- Configuring done
    1> [CMake] -- Generating done
    1> [CMake] -- Build files have been written to: /home/lxy/.vs/WSLwithVS/out/build
    1> [CMake] 
    1> 已提取 CMake 变量。
    1> 已提取源文件和标头。
    1> 已提取代码模型。
    1> 已提取包含路径。
    1> CMake 生成完毕。
    
  3. 设置断点、启动调试


    调试控制台信息:

    =thread-group-added,id="i1"
    GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.2) 9.2
    Copyright (C) 2020 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    Type "show copying" and "show warranty" for details.
    This GDB was configured as "x86_64-linux-gnu".
    Type "show configuration" for configuration details.
    For bug reporting instructions, please see:
    <http://www.gnu.org/software/gdb/bugs/>.
    Find the GDB manual and other documentation resources online at:
        <http://www.gnu.org/software/gdb/documentation/>.
    
    For help, type "help".
    Type "apropos word" to search for commands related to "word".
    Warning: Debuggee TargetArchitecture not detected, assuming x86_64.
    =cmd-param-changed,param="pagination",value="off"
    [Thread debugging using libthread_db enabled]
    Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
    
    Breakpoint 1, main (argc=32767, argv=0x1) at ../../main.cpp:5
    5	{
    Loaded '/lib64/ld-linux-x86-64.so.2'. Symbols loaded.
    Loaded '/lib/x86_64-linux-gnu/libQt5Core.so.5'. Symbols loaded.
    Loaded '/lib/x86_64-linux-gnu/libstdc++.so.6'. Symbols loaded.
    Loaded '/lib/x86_64-linux-gnu/libgcc_s.so.1'. Symbols loaded.
    Loaded '/lib/x86_64-linux-gnu/libc.so.6'. Symbols loaded.
    Loaded '/lib/x86_64-linux-gnu/libpthread.so.0'. Symbols loaded.
    Loaded '/lib/x86_64-linux-gnu/libz.so.1'. Symbols loaded.
    Loaded '/lib/x86_64-linux-gnu/libicui18n.so.66'. Symbols loaded.
    Loaded '/lib/x86_64-linux-gnu/libicuuc.so.66'. Symbols loaded.
    Loaded '/lib/x86_64-linux-gnu/libdl.so.2'. Symbols loaded.
    Loaded '/lib/x86_64-linux-gnu/libpcre2-16.so.0'. Symbols loaded.
    Loaded '/lib/x86_64-linux-gnu/libdouble-conversion.so.3'. Symbols loaded.
    Loaded '/lib/x86_64-linux-gnu/libglib-2.0.so.0'. Symbols loaded.
    Loaded '/lib/x86_64-linux-gnu/libm.so.6'. Symbols loaded.
    Loaded '/lib/x86_64-linux-gnu/libicudata.so.66'. Symbols loaded.
    Loaded '/lib/x86_64-linux-gnu/libpcre.so.3'. Symbols loaded.
    
    Breakpoint 2, main (argc=1, argv=0x7fffffffe508) at ../../main.cpp:8
    8	    qDebug() << "Application started";
    

标签:x86,gnu,WSL,C++,Symbols,Visual,64,linux,loaded
From: https://www.cnblogs.com/linxmouse/p/18472536

相关文章

  • OpenGL: 计算机图形学OpenGL在Visual Studio 2019/2022中的环境配置
    前言    在查找了众多有关OpenGL相关的环境配置后,对opengl在vs中的初步配置终是有了收获,总结作以此篇以免自己遗忘,也希望对大家有所帮助。一、OpenGL简介        OpenGL(OpenGraphicsLibrary)是一个跨语言、跨平台的应用程序编程接口(API),用于渲染二维和三维......
  • VisualDL: 飞桨深度学习可视化工具
    VisualDL简介VisualDL是百度飞桨(PaddlePaddle)推出的一款功能强大的深度学习可视化分析工具。它为开发者提供了丰富的可视化功能,包括实时跟踪训练指标、可视化模型结构、展示数据样本、可视化高维数据分布等,帮助用户更直观地理解训练过程和模型结构,从而高效地进行模型优化。......
  • C++ 易踩坑总结以及小技巧
    1.for循环中在栈上创建的对象可能具有相同的地址,进行指针操作时需注意;所以循环中最好使用new来创建指针并操作地址;for(intx:arr){ ClassNameobj();\\itisliketohavethesameaddressineveryloop ClassNameobj2=newClassName(); std::cout<<&obj<<std::en......
  • 为何选择 C++:深入剖析其优势与适用场景
    在众多编程语言的璀璨星空中,C++以其独特的魅力和强大的功能闪耀着独特的光芒。对于许多编程学习者和开发者来说,选择C++作为学习或应用的语言,往往有着诸多深刻的原因。一、强大的性能与效率C++是一种高效的编程语言,它直接操作硬件资源,能够生成高度优化的代码。这使得它在......
  • opencv yolo11 onnx c++代码
    1.exportonnx,opset我设置的是12,其它值或许也可以2.opencv使用的4.10【其他版本或许也可以,4.7.0版本是不行的】3.代码核心参考yolo之前版本的实现即可。 model.setInput(blob);model.forward(outputs,outnames);constintdimensions=84;constintrows=......
  • C++智能指针
    智能指针1、智能指针本身:智能指针是一个类模板的实例,通常作为局部变量存在于栈区(Stack)。当函数返回或者局部变量超出其作用域时,栈区的内存会被自动释放。2、智能指针管理的对象:智能指针通常用来管理在堆区(Heap)上分配的内存。这是通过调用如new操作符来完成的。堆区的内存会一直......
  • C++算法练习-day1——704.二分查找
    题目来源:.-力扣(LeetCode)题目思路分析二分查找是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从......
  • C++ [NOIP1999 提高组] 邮票面值设计 详解
    C++[NOIP1999提高组]邮票面值设计详解题目背景题目描述输入格式输出格式样例#1样例输入#1样例输出#1完整代码(你们最想要的):[NOIP1999提高组]邮票面值设计题目背景除直接打表外,本题不保证存在正确且时间复杂度可以通过全部数据做法。由于测试数据过水,部......
  • C++基础语法---类和对象
    目录1、概念1.1对象:1.2类型:2、抽象3、封装4、对象的产生5、对象的大小6、 操作对象7、数据的保护和共享8、C++内置字符串操作类例:分文件形式---时钟类代码实现:总结:1、概念1.1对象:现实世界中一切客观存在的事物,统称为对象。对象是有形的,例如一杯水,一台......
  • 链表C++
    #include<iostream>#include<stdexcept>usingnamespacestd;#defineeleTypeintstructListNode{ eleTypem_data; ListNode*next; ListNode(eleTypedata) { m_data=data; next=NULL; }};classLinkedlist{private: ListNode*head; ......