溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么利用Debug調(diào)試代碼解決0xC0000005錯(cuò)誤

發(fā)布時(shí)間:2023-03-09 09:53:06 來源:億速云 閱讀:128 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“怎么利用Debug調(diào)試代碼解決0xC0000005錯(cuò)誤”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

VS2019利用Debug調(diào)試代碼解決0xC0000005: 讀取位置 0x0000000000000000 時(shí)發(fā)生訪問沖突
之前一直是使用release發(fā)布代碼模式進(jìn)行程序編譯,前天突然出現(xiàn)這個(gè)問題:

0xC0000005: 讀取位置 0x0000000000000000 時(shí)發(fā)生訪問沖突

查找資料發(fā)現(xiàn)大概率是出現(xiàn)了空指針。沒有判斷指針是否為空就進(jìn)行后續(xù)操作導(dǎo)致的錯(cuò)誤,但是release模式并沒有提示問題出現(xiàn)在哪里,只是顯示程序崩掉,并且給你錯(cuò)誤信息,查找資料后發(fā)現(xiàn)Release 稱為發(fā)布版本,它往往是進(jìn)行了各種優(yōu)化,使得程序在代碼大小和運(yùn)行速度上都是最優(yōu)的,以便用戶很好地使用,但是會(huì)忽略調(diào)試信息,這不利于我們進(jìn)行程序調(diào)試。(所以我只憑借經(jīng)驗(yàn)進(jìn)行初步調(diào)試,但是效率很低也沒有解決實(shí)際問題)

而debug配置能夠包含調(diào)試信息,并且不作任何優(yōu)化,便于程序員調(diào)試程序。

這就方便我們進(jìn)行程序的調(diào)試和斷點(diǎn)設(shè)置,設(shè)置了斷點(diǎn)就可以看到所有變量的信息。就方便我們找到問題出現(xiàn)在了哪里。

果然,當(dāng)我將配置改為debug后,運(yùn)行程序,就會(huì)自動(dòng)顯示下圖所示地方發(fā)生錯(cuò)誤:為nullptr,空指針。那么問題就顯而易見了。

怎么利用Debug調(diào)試代碼解決0xC0000005錯(cuò)誤

但是我在上句語句中已經(jīng)獲得了pGalvanometer對(duì)象指針,這里不應(yīng)該是nullptr。所以我在該位置設(shè)置斷點(diǎn),運(yùn)行后,發(fā)現(xiàn)hr不為S_OK,而是顯示加載有問題,那么很顯然問題出在我加載外部組件COM中了。

怎么利用Debug調(diào)試代碼解決0xC0000005錯(cuò)誤

但是我并沒有改變COM組件的加載代碼,于是認(rèn)為可能組件注冊(cè)出現(xiàn)問題。于是我重新注冊(cè)了一下COM組件。

怎么利用Debug調(diào)試代碼解決0xC0000005錯(cuò)誤

“怎么利用Debug調(diào)試代碼解決0xC0000005錯(cuò)誤”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI