真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

解決在VScode中調(diào)試C++代碼斷點(diǎn)無(wú)效、斷點(diǎn)錯(cuò)位的問(wèn)題-創(chuàng)新互聯(lián)

問(wèn)題背景

最近在學(xué)習(xí)高翔博士的經(jīng)典教程《視覺(jué)SLAM十四講(第2版)》,使用其配套的Github中C++代碼進(jìn)行學(xué)習(xí),在調(diào)試時(shí)發(fā)現(xiàn)斷點(diǎn)無(wú)效、錯(cuò)位的問(wèn)題,查閱了一些資料,成功解決,記錄一下。
編輯器:VSCode
操作系統(tǒng):Ubuntu20.04
調(diào)試方式:cmake + make
關(guān)于在VScode中調(diào)試C++代碼的教程,可以參考這個(gè):Linux下使用VS Code + CMake 調(diào)試c++程序

十載專注成都網(wǎng)站制作,成都企業(yè)網(wǎng)站定制,個(gè)人網(wǎng)站制作服務(wù),為大家分享網(wǎng)站制作知識(shí)、方案,網(wǎng)站設(shè)計(jì)流程、步驟,成功服務(wù)上千家企業(yè)。為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù),專注于成都企業(yè)網(wǎng)站定制,高端網(wǎng)頁(yè)制作,對(duì)柔性防護(hù)網(wǎng)等多個(gè)方面,擁有多年的網(wǎng)站維護(hù)經(jīng)驗(yàn)。問(wèn)題描述

在最開(kāi)始的時(shí)候,CMakeLists.txt中設(shè)置成了發(fā)布模式(Release),設(shè)置斷點(diǎn)后,調(diào)試時(shí)斷點(diǎn)無(wú)效,即無(wú)法在任何斷點(diǎn)處停下,而在CMakeLists.txt中設(shè)置set(CMAKE_BUILD_TYPE "Debug")后,調(diào)試時(shí)能夠停下,但是沒(méi)有在斷點(diǎn)處停下,而是在別的地方,如下圖所示:
斷點(diǎn)錯(cuò)位
從這張圖可以看到,斷點(diǎn)設(shè)置在42行,但調(diào)試時(shí)卻停在46行的for循環(huán)入口處,顯然不是我們想要的。
更離譜的是,在某些位置,調(diào)試前斷點(diǎn)設(shè)置在某行,調(diào)試時(shí)斷點(diǎn)卻出現(xiàn)在別的地方,如下圖所示,調(diào)試開(kāi)始前設(shè)置的斷點(diǎn)位置:
調(diào)試前
調(diào)試時(shí)的斷點(diǎn)位置:調(diào)試時(shí)
可以看出,調(diào)試前斷點(diǎn)在92行,調(diào)試開(kāi)始后斷點(diǎn)卻在95行,后來(lái)查閱資料才發(fā)現(xiàn),這是代碼編譯優(yōu)化導(dǎo)致的。

解決方法

在VScode中使用cmake + make 方式調(diào)試C++代碼時(shí),想要正常進(jìn)行斷點(diǎn)調(diào)試,在CMakeLists.txt文件中需要注意以下兩點(diǎn):

  1. 設(shè)置為"Debug"模式:set(CMAKE_BUILD_TYPE "Debug"),如果設(shè)置為"Release"模式,設(shè)置斷點(diǎn)后在調(diào)試時(shí)是默認(rèn)無(wú)效的,進(jìn)入調(diào)試后,斷點(diǎn)會(huì)變?yōu)榭招臄帱c(diǎn),程序不會(huì)在任何斷點(diǎn)處停下。
  2. 取消代碼編譯優(yōu)化:一定要注釋掉set(CMAKE_CXX_FLAGS "-O3")(或不寫(xiě)),否則“任何級(jí)別的優(yōu)化都將帶來(lái)代碼結(jié)構(gòu)的改變,將會(huì)使目標(biāo)代碼的執(zhí)行順序變得面目全非,導(dǎo)致調(diào)試信息嚴(yán)重不足?!?/li>

綜上,在CMakeLists.txt中設(shè)置如下:

set(CMAKE_BUILD_TYPE "Debug")
# set(CMAKE_CXX_FLAGS "-O3")

調(diào)試時(shí)能夠在斷點(diǎn)處正常停止:
在這里插入圖片描述
問(wèn)題成功解決。

參考文章
  1. Linux下使用VS Code + CMake 調(diào)試c++程序
  2. CMake指令解析 set(CMAKE_CXX_FLAGS “$ENV{CXXFLAGS}
  3. 添加鏈接描述gcc -O0 -O1 -O2 -O3 四級(jí)優(yōu)化選項(xiàng)及每級(jí)分別做什么優(yōu)化

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


網(wǎng)站標(biāo)題:解決在VScode中調(diào)試C++代碼斷點(diǎn)無(wú)效、斷點(diǎn)錯(cuò)位的問(wèn)題-創(chuàng)新互聯(lián)
文章分享:http://weahome.cn/article/dgjsei.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部