一、可能的原因
1、生成源碼的方式不同:
在 Visual Studio 中調試的話,程序會生成 .pdb 文件,這個文件包含了程序的符號表信息,包含了變數名、函數名以及地址等,這樣 Visual Studio 在調試時就可以根據這些信息來對程序進行分析了。
但是在 VSCode 中,它並不會使用 pdb 文件,它使用的是諸如 LLVM 等編譯器的 DWARF 格式來生成 GDB 所需的信息。而 DWARF 格式只有在調用此函數時才會生成,而且只有第一次調用函數時才會生成,所以,如果沒有調用一個函數,那麼 GDB 就不知道這個函數的符號信息。
2、調試信息沒有編譯進程序中:
有時候在編譯程序的時候,如果沒有手動開啟調試信息等選項,就會導致編譯時沒有將調試信息編譯進程序中,這樣調試器就找不到符號信息。
3、安裝的插件不支持:
在使用 VSCode 的時候,我們可能會安裝一些插件,比如 C/C++ 插件,這些插件有時候可能會影響程序的調試,導致斷點無法正常工作。
二、解決方案
1、生成調試信息
在 VSCode 中調試的時候,需要程序生成調試信息才能正常使用斷點,我們可以採用以下兩種方式來生成調試信息:
- 在編譯時開啟調試信息選項
- 手動添加調試符號
g++ -g main.cpp -o main //Linux
cl /Zi main.cpp //Windows
objdump -g --dwarf=info a.out > a.dwarf
通過這種方式,我們可以手動添加調試符號。
2、禁用不必要的插件
在使用 VSCode 調試的時候,有些插件可能會影響程序的調試,我們可以先禁用插件並嘗試重啟 VSCode,看是否能夠正常使用斷點。如果斷點正常工作,則說明插件是問題所在,我們可以重新安裝或更換插件。
3、使用調試命令行工具
除了 VSCode 自帶的調試工具外,我們還可以使用 GDB 或其他命令行調試工具來進行調試,這些工具的功能非常強大,而且不會出現斷點無法正常工作的問題。
三、總結
在使用 VSCode 進行調試時,有時候遇到斷點無法正常工作的問題。這可能是由於生成調試信息的方式不同、調試信息沒有編譯進程序中或安裝的插件不支持等原因造成的。為了解決這個問題,我們可以嘗試生成調試信息、禁用不必要的插件或使用命令行調試工具等方法。希望本文能夠幫助大家解決問題,提高工作效率。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/293604.html