導航:首頁 > 源碼編譯 > gdb編譯錯誤

gdb編譯錯誤

發布時間:2022-09-22 03:25:54

linux編譯gdb的問題

configure: error: `target_alias' has changed since the previous run:
configure: former value: i686-pc-linux-gnu
configure: current value: i386-rtems
configure: error: changes in the environment can compromise the build
configure: error: run `make distclean' and/or `rm ./config.cache' and start over

說的很明白了。
如果看不懂,那麼最簡單的辦法就是刪了這個源代碼後重新解壓縮

㈡ iOS 編譯報錯怎麼辦

1.編譯iPad真機時,選擇了 Architetures:Standard(armv6) BaseSDK:iPhoneDevice3.2 TargetDeviceFamily:iPad.

若編譯出現如下錯誤:

Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1

則修改 GCC4.2CodeGeneral區域中的ComplieForThumb為非選中.

已經有了開發者證書及私鑰後,可直接在越獄的手機上調試.

2. 編譯鏈接時, "_OBJC_CLASS_$_xxx", referenced from:可能需要重新建立某個類的文件.

或者:選擇項目名,在detail列表中的target列(顯示為一個又圓圈),把這個文件的復選選中,或者再次選中.以把它加入到這個target裡面來.

3.在sdk4.0及以上使用RegexKitLite報'captureCount' was not declared in this scope錯誤,是在非.m文件中使用了它的原因.

4.there is no sdk with the name or path.

從網上down的開源代碼,結果運行的時候常出現這樣的錯,並且在deployment中沒有iosdeploymenttarget選項.

嘗試 Project/Edit Active Target/ 及 Set Active SDK菜單項,來回切換一下Active Configuration。

5. EXEC_BAD_ACCESS,EXC_BAD_INSTRUCTION錯誤,意味著這個app有內存管理的問題,一般是因為訪問野指針對象造成的。

一個和內存相關的崩潰一般很難定位到源代碼,因為這個惡魔可能很早就在程序中做了壞事了。假如一段有問題的代碼混亂了內存結構,這樣產生的蝴蝶效應可能會在之後很久才表現出來,並且總在不同的地方。所以,若有指針類型出現了不可能的變化,很可能就是因為內存結構被野指針調用混亂了。

修復一些警告後,可能就能預防一些內存錯誤。警告在左邊靠近行號的黃色三角指出一個編譯警告,你點擊那個黃色的三角形,xcode可能會彈出一個「Fix-it」的建議。

EXC_BAD_ACCESS崩潰不像SIGABRT,將不會得到很明朗的錯誤消息。然而可以使用一個讓人看到曙光的調試工具:Zombies!死亡對象工具。打開這個項目的scheme editor,選擇Run 選項,然後選擇Diagnosics標簽。勾上Enable Zombie Objects選項。當這個zombie工具被啟用之後,即使這個對象被釋放了,這個對象的內存也不會被清理。所以,那塊內存將會被標記為「長生不死的」。假如你試著之後又去使用這塊內存,這個app能夠意識到你的錯誤操作,並且app將會拋出「messagesent to daellocated instance」錯誤並且終止運行。

在工程中加入NSZombieEnabled 環境變數,並設為啟用,則在 EXC_BAD_ACCESS 發生時,XCode 的 Console 會列印出問題描述中,設置方法:雙擊Executables 下的 可執行模組,在彈出窗口中,Variables to be set in the environment,添加 NSZombieEnabled,並設定為 YES,點擊選中復選框啟用此變數。

可以再加入 MallocStackLogging 來啟用malloc記錄,以獲得更多的提示來幫助定位問題。

在gdb窗口輸入 (格式: shell malloc_history <id> <address>) shellmalloc_history1436 0x5f7fcf0, 也可以在終端中去運行 就要去掉以上的shell 指令 如 malloc_history <id> <address>

應該僅當需要調試內存時,才設置上述環境變數。

注意一點:不應該一直啟用zombie objects。因為這個工具將永遠不會釋放內存,只是簡單標記一下這個內存是不死的,你最終將會在某個時候耗盡所有的內存,因為所有分配過的內存都不會得到重用。因此應該在排查內存相關的錯誤的時候才開啟zombie objects,其他時候應該關閉它。

在xcode4中,To edit environment variables, go to Menu Proct / Edit Scheme…, select the desired configuration (you probably want 'Run') from the left sidebar first and then click on the Arguments tab. Environment variables are configurable there.

6.運行一個IPhone程序時,彈出窗口說「程序運行失敗,預置描述文件已過期」 。 解決辦法是,在Xcode中, window-> Orgnazier -> 你的iphone ->刪除帶有紅*的該程序之前的Profile 。 然後從Xcode運行該程序.

7.真機編譯時報 Code Sign error: The identity doesn't match any valid certificate/private key pair in the default keychain

修改工程和Targets的get infouild 中的code signing identity為空

8.調試列印

CFShow(coreFoundationThingy) will print out a description of coreFoundationThingy to the console. Output looks something like: {value = w:1186.000000 h:687.000000 type = kAXValueCGSizeType}

If NSLog() is printing something out as an NSCFType, try CFShow().

9. 編譯時報 Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang failed with exit code 1,修改C/C++ Compiler Version為gcc4.2

10.this class is not key value coding-compliant for the key viewController

可能在創建了一個基於view的工程,而後把生成的viewcontroller刪除了,但是在.xib中還有對它的引用,在IB中直接用delete鍵刪除掉它就行了。

11.這台電腦上已經存在一個名為「embedded.mobileprovision」的預置文件,您是否要替換么?

http://blog.sina.com.cn/s/blog_6907b67f0100o2vw.html

12.真機調試時報failed to upload *.app

http://hi..com/%CB%E6%B7%E7_1989/blog/item/9649f49f805f05aec8eaf466.html

http://www.shouyanwang.org/thread-462-1-1.html

13.記的release時,先置delegate為nil。

一個節點不應該保留任何對不屬於它的節點的引用。

14.模擬器

將xcode升級到4.3.1以後發現,ipad的模擬器,沒有Home鍵了。Command+Shift+H就可以實現類似點擊Home鍵的效果了。

㈢ gdb載入動態庫成功,但是不能顯示動態庫中的源碼(gdb+gdbserver)

因為具體的給的不夠詳細,不清楚你遇到的情況。
如果僅從斷點上看,應該就是CApartment.cpp:55
但是,如果你的程序編譯的時候,不是-O0,那個可能回不到源碼,只能看匯編。
1、有時候(很少)就是編譯器的錯誤。
2、還有可能就是你調試的程序和你的源碼不匹配
3、你的程序已經崩潰了,破壞了堆棧或者GDB需要的數據。
4、這個地方有特殊的定位信息
5、其他情況,還是比較多的,經常遇到。
如果懂匯編,最好看看匯編。
如果不懂,看看那一條語句是最後一條能夠跟蹤的語句。
仔細看看最後一條語句的所有變數,應該能猜出來是什麼問題。

㈣ gdb變數不存在

你問的gdb變數不存在的原因吧。在用GDB調試被優化過的程序時,可能會發生某些變數不能訪問,或是取值錯誤碼的情況。
優化程序會刪改程序,整理程序的語句順序,剔除一些無意義的變數等,所以在GDB調試這種程序時,運行時的指令和你所編寫指令就有不一樣,也就會出現你所想像不到的結果。對付這種情況時,需要在編譯程序時關閉編譯優化。
gdb是UNIX及UNIX-like下的調試工具。該工具能啟動程序,可讓被調試的程序在所指定的調置的斷點處停住(斷點可以是條件表達式),當程序被停住時,可以檢查此時程序中所發生的事,還可以改變程序,將一個BUG產生的影響修正從而測試其他BUG。

㈤ g++編譯程序,運行報錯,怎麼定位錯誤代碼

在g++編譯選項中加上-g生成調試信息,然後用gdb運行生成的可執行文件即可進入調試。gdb的各種命令可以自己搜索。

建議使用Visual Studio等IDE來寫代碼和調試運行,這樣比你手動操作編譯器和調試器要方便得多。

㈥ Cannot find bounds of current function是怎麼回事

Cannot find bounds of current function是找不到當前函數的界。
1、gdb找不到應用程序的調試符號,檢查編譯選項已經添加了調試相關選項。使用file命令檢查載入的文件:$ file httpd_sequential
httpd_sequential: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped。
2、編譯應用程序的gcc與調試程序的gdb不匹配,arm-eabi-gdb需要的是arm-eabi-gcc編譯生成的映像文件。gdb不檢查ELF文件頭給出錯誤報告。
3、使用正確的gcc編譯其編譯後重新使用file命令檢查文件類型:$ file httpd_sequential
httpd_sequential: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, not stripped。
4、在嵌入式系統開發過程通常需要交叉編譯,必須小心處理所使用的編譯器和調試器,特別是在使用Eclipse等集成開發環境的情況下要仔細核對開發環境使用的是那個編譯器和調試器。默認情況下Eclipse調用的是本地編譯器和調試器而不是交叉編譯器。

㈦ LINUX環境下編譯錯誤 not in executable format: 不可識別的文件格式

產生core文件是程序崩潰時留下的信息,如果想要查看core文件的內容,請執行GDB跟蹤程序,命令如下:
gdb ./yourfile core.5245
根據你給出的命令和gdb錯誤提示,可以斷定,你gdb命令用錯了,第二個參數是你的可執行程序,比如,你的可執行程序叫DataIntegrityCheck,第3個輸入項才是core文件的名字。那麼整個命令應該是
cd /home/liubo/DataIntegrityCheck/bin
gdb ./DataIntegrityCheck core.5245

DataIntegrityCheck這里一定是你編譯好的可執行程序,我只是舉個例子而已。如果你編譯沒有指定,它甚至可以是a.out

你再試試吧。
core文件,改成.c是沒有用的

㈧ linux gdb調試問題

出現此錯誤的原因主要是gcc4.9生成的調試信息是dawnfs4,而gdb7.0支持的是 dawnfs2

這個問題其實是編譯環境的問題,可以更改gcc和gdb的版本,這需要去尋找合適的版本。當然也可以給gcc增加編譯參數,使其生成dawnfs2調試信息,主要參數為-gdwarf-2 -gstrict-dwarf,做法如下:
在.bashrc中加入alias gcc='gcc -gdwarf-2 -gstrict-dwarf',重啟終端使其生效
這樣gdb可以使用,也不會出現上面的錯誤。

㈨ 用逆向插入法建立一個雙鏈表,編譯時提示「段錯誤」,用GDB調試提示錯誤在main()、creat(),還請高手指點

逆向插入是什麼意思?
是插到尾後?插到尾後?插到頭前?插到頭後?

D_list *creat()
{
D_list *head;
D_list *newd;
int i;

head = (D_list*)malloc(LEN);
if(head == NULL) return NULL;
head -> next = NULL;
head -> prior = NULL;

for(i = n; i > 0; -- i )
{
newd = (D_list*)malloc(LEN);
if(newd == NULL) return NULL;
newd -> data = i * 3;

newd -> next = head -> next;
newd -> prior = head;
head -> next = newd;
}

return head;
}
另外if(i == n)是要處理什麼?我怎麼覺得沒用

閱讀全文

與gdb編譯錯誤相關的資料

熱點內容
python實現多態 瀏覽:298
幼師pdf 瀏覽:939
你怎麼用python開發游戲 瀏覽:645
雷霆戰機伺服器異常是什麼問題 瀏覽:667
程序員客棧20 瀏覽:254
化妝pdf下載 瀏覽:923
takla伺服器ip地址 瀏覽:357
歐盟加密資產法律 瀏覽:573
威綸通反編譯密碼是多少 瀏覽:201
51單片機有40個外部引腳 瀏覽:956
山西撥號伺服器雲空間 瀏覽:714
python中階乘怎麼計算 瀏覽:530
linux查看塊大小 瀏覽:554
空調壓縮機壓力低 瀏覽:183
pdf怎麼復制粘貼文字 瀏覽:575
網上認證系統認證伺服器地址 瀏覽:302
沒有電腦怎麼領阿貝雲的伺服器 瀏覽:19
螺旋箍筋的演算法 瀏覽:268
網易進不去伺服器怎麼回事電腦版 瀏覽:892
誅仙伺服器怎麼連接 瀏覽:127