c++多线程如何配置环境看线程的调试信息

80 天前
 zcion

用的是 vscode+cmake,debug 的方式是配置 Launch.jsontasks.json 执行 cmake 构建命令并运行可执行文件。 现在遇到的问题是:不知道怎么查看多线程中多个线程的调试信息。 我在网上看见给命令加-pthread的,以下是我的CMakeLists.txt文件

cmake_minimum_required(VERSION 3.10)

# 添加了 -pthread
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++20 -pthread")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c17")
project(thread-pool)
set(HOME ${CMAKE_CURRENT_SOURCE_DIR})
set(EXECUTABLE_OUTPUT_PATH ${HOME}/bin)


include_directories(${HOME}/include)

link_directories(${HOME}/bin)
aux_source_directory(${HOME}/src SRC_PATH)

add_executable(app ${SRC_PATH})

target_link_libraries(app PUBLIC pthread)

结果 vscode 中还是看不到多个线程的调试信息。 大手子都是怎么看多线程调试信息的?

1826 次点击
所在节点    C++
11 条回复
coderluan
80 天前
从楼主这个 pthread 加的,看出来楼主应该完全没 C++基础。那么就消停安装 vs 没有 c ,cmake 生成个 vs 项目,默认加断点就能在多线程之间调试。人生苦短,别为难自己。
asuraa
80 天前
直接用 visual studio 2022 别折腾 cmake 了,这玩意太蛋疼了
Donaldo
80 天前
没太懂你这个多个线程的调试信息是什么意思?想在哪断就在哪打断点呗?
ashong
80 天前
@asuraa 现在倒是喜欢用 cmake 了,
反正 vs 也支持 cmake 管理,就是在用的 Xcode 版本还不支持
zcion
80 天前
@coderluan 个人更偏好 vscode 一点,而且最近在折腾 cmake ,想看看有没有什么骚操作
zcion
80 天前
@Donaldo 假如我现在开了三个线程,我希望能看到这三条线程分别执行的情况,默认的调试是单步的,没办法区分线程单独看
fcyxp
80 天前
你的问题是否是,当设置的断点命中时,查看其他线程正在执行哪一个代码/指令?
exch4nge
80 天前
vscode 断下来后,默认会显示多个线程吧 https://code.visualstudio.com/docs/cpp/cpp-debug#_multithreaded-debugging
要是 linux 建议先学 gdb
garychenlin
80 天前
没用 vscode 调试过,我都用 gdb ,命令 info threads 、thread <id>
MCVector
79 天前
@zcion 在 Visual Studio 里面你可以 Freeze 住其它的线程,只单步调试目前的线程。VSCode 里面应该也有类似功能。
asuraa
79 天前
@ashong 我上次为了改个 MT 用静态库,折腾了一上午,

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1076956

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX