鍍金池/ 問(wèn)答/PHP  C/ Clion調(diào)試時(shí)顯示gdb.exe已停止工作

Clion調(diào)試時(shí)顯示gdb.exe已停止工作

在Clion中進(jìn)行斷點(diǎn)調(diào)試的過(guò)程進(jìn)行到最后的時(shí)候出現(xiàn)如下錯(cuò)誤

clipboard.png
事實(shí)上不影響調(diào)試,但是還是想知道哪里沒(méi)配置好

回答
編輯回答
貓小柒

一開(kāi)始使用的是MingGW,后來(lái)改為使用mingw-w64就解決了問(wèn)題。Google了一下,應(yīng)該是MingGW中的gcc或者gdb版本太低的問(wèn)題

2017年9月17日 13:11
編輯回答
礙你眼

你應(yīng)該注明具體版本以及所用標(biāo)準(zhǔn), 比如c99/90/11... cmake里面可以看得到.

void main從來(lái)不是標(biāo)準(zhǔn)所允許的, 無(wú)論是c90以前還是c90以后的標(biāo)準(zhǔn), 所以從語(yǔ)言角度來(lái)說(shuō)就是UB了. 有些實(shí)現(xiàn)(比如vc)允許這么寫(xiě), 所以對(duì)這些特定實(shí)現(xiàn)就不是UB(不過(guò)這里UB到底能不能由實(shí)現(xiàn)來(lái)規(guī)定是沒(méi)有定論的, 因?yàn)橐呀?jīng)脫離標(biāo)準(zhǔn)來(lái)講了), 不過(guò)c90是允許省略開(kāi)頭的int的, 即main(){...}, c99就不允許了.
c90必須顯式return 0/EXIT_SUCCESS/...

c99的int main()有默認(rèn)的隱式return 0, c90就沒(méi)有, 所以如果你不return 0(或者其他)就UB了

所以如果你是c99/11, 就先把void main改成int main(),如果是c90/89, return 0也要加上.

2017年8月8日 17:51