minicore編譯調試
① tiny core linux如何安裝GCC編譯器啊,有沒有必要安裝
這個應該都會自帶的吧,因為有一些軟體包都是源碼包,是需要自己編譯的。 這就是為什麼編譯器被稱為系統軟體的原因。這個很重要的。
② mcore的交叉編譯環境怎麼建立
建立針對arm的交叉編譯開發環境為例來解說整個過程,其他的體系結構與這個相類似,只要作一些對應的改動。我的開發環境是,宿主機 i386-RedHat-7.2,目標機 arm。這個過程如下1. 下載源文件、補丁和建立編譯的目錄2. 建立內核頭文件3. 建立二進制工具(binutils)4. 建立初始編譯器(bootstrap gcc)5. 建立c庫(glibc)6. 建立全套編譯器(full gcc)
③ 三星galaxy core mini無法連接電腦
根據您的描述,您可按照以下操作:
1.電腦下載安裝kies3驅動軟體,具體kies3下載地址請您訪問:
http://www.samsung.com/cn/support/usefulsoftware/KIES/JSP
2.手機關閉usb調試功能,如果使用第三方手機助手連接手機,需要開啟USB調試選項,該手機為4.3系統,USB調試功能在"開發者選項中「。開發者選項為系統隱藏項目,您可按照以下方法打開此隱藏項目:
待機畫面點擊應用程序-點擊設定-選擇-」一般「標簽-關於設備-連續點擊內部版本號7次(可根據彈出提示預覽剩餘次數)-返回上層菜單即可調出開發者選項後,即可查看到USB調試選項。
3.然後手機連接電腦即可。
若使用為第三方手機助手連接手機,連接後,手機會彈出提示框是否允許USB調試。點擊確定
若上述操作後仍無法連接電腦,建議:
1.檢查電腦中Windows Media Player是否安裝,檢查電腦中Windows Media Player版本是否在11以上,若版本較低,建議下載最新版本軟體。
2.更換電腦USB介面,台式機建議用主機後面的USB埠。
3.如果條件允許,更換數據線嘗試一下連接
4.關閉電腦中的殺毒軟體或防火牆嘗試。
5.有可能跟電腦系統兼容程序有關,也可更換其他電腦嘗試連接。
④ 1 linux下調試core的命令,察看堆棧狀態命令
比方說,你要調試的core文件是 core.xxx,原始可執行文件是 a.exe
先用 gdb a.exe 進入 gdb,在gdb命令行下 執行
core-file /path/to/core.xxx
然後即可調試core mp文件了,比如用 bt 等
⑤ 如何編譯運行minigui 3.0.1圖形庫
MiniGUI 提供了最簡便的安裝方法,只需要掛載光碟並運行光碟中根目錄下的 install.sh 腳本即可。您可以通過下邊的命令查看 install.sh 的幫助信息。
user$ ./install.sh --help
由幫助信息可得到安裝時需要以下參數:
--adp_inst_dir :指定庫的安裝路徑,默認安裝路徑為 /usr/local/ 目錄
--src_inst_dir :指定組件及其依賴庫代碼解壓路徑,默認解壓路徑為主目錄,比如使用的用戶名為test,那麼解壓路徑為 /home/test/ 目錄
--minigui_runmode :指定您要安裝的 MiniGUI 運行模式,默認的 MiniGUI 運行模式是進程版(標准版和評估版中只有線程模式,因此無需此安裝選項)
以下是安裝 MiniGUI 進程版本到默認路徑 /usr/local 目錄下,並且將組件及其依賴庫等源代碼解壓到 /home/test/3.0.2 路徑下的示例。
user$ sudo ./install.sh --adp_inst_dir=/usr/local --src_inst_dir=/home/test/3.0.2 \ --minigui_runmode=procs
⑥ minicore晶元儀出現an error motor move with minicore怎麼辦
·可以自動控制組織晶元模塊的X-Y軸打孔位置
·打孔器自動旋轉對標本取樣,自動計算取樣細胞坐標,自動傳送組織樣本到對應位置,針對樣本模塊和組織晶元模塊快速植入植出系統
·連接到計算機上指出模塊ID選擇組織類型
·取樣放樣打孔器同軸打孔技術,不需要打孔針校準,保證長期有效的打孔位置減少維護次數
·可以精確控制標本
⑦ 如何編譯和調試android源碼中platform/system/core下的代碼
首先在Android源代碼目錄下的build目錄下,有個腳本文件envsetup.sh,執行這個腳本文件後,就可以獲得一些有用的工具:
USER-NAME@MACHINE-NAME:~/Android$ . ./build/envsetup.sh
注意,這是一個source命令,執行之後,就會有一些額外的命令可以使用:
- croot: Changes directory to the top of the tree.
- m: Makes from the top of the tree.
- mm: Builds all of the moles in the current directory.
- mmm: Builds all of the moles in the supplied directories.
- cgrep: Greps on all local C/C++ files.
- jgrep: Greps on all local Java files.
- resgrep: Greps on all local res/*.xml files.
- godir: Go to the directory containing a file.
這些命令的具體用法,可以在命令的後面加-help來查看,這里我們只關注mmm命令,也就是可以用它來編譯指定目錄的所有模塊,通常這個目錄只包含一個模塊。
⑧ 如何調試復雜的coremp文件
調試Dump文件很簡單,雙擊自動打開VC然後F7運行。
但是中間要注意很多事情。
1。Dump文件放在哪裡
Dump文件不用非要放在你編譯出來的位置,你完全可以建立一個新的文件夾來放它。
2。要恢復當時的現場
可能你要問,怎麼可能,這個mp文件可是用戶發給我的,我不可能去用戶家裡調試吧?
這個恢復現場可不是指的非要到那台機器上去,而是要把產生mp文件對應的二進制文件拿到。
但是恢復現場需要所有的二進制文件都要對應,你一定要有導致用戶崩潰的那些Exe和Dll。既然是你發布的程序,Exe文件當然你會有。所以這里只考慮Dll就行了。
Dump文件中記錄了所有dll文件的版本號和時間戳,所以你一定可以同過某種途徑拿到它。如果你能從用戶那裡拿到最好,如果不方便,用戶不可能用的是我們平常不常用的操作系統,所以找個有對應系統的機器一般都會有。但是記住不光是文件名稱要一致,還要核對版本和時間戳,如果不同一樣沒有辦法用。
如果客戶用了某個特殊的補丁怎麼辦?
其實這個問題也很好解決,只要它不阻礙閱讀堆棧,就不用管它,調試Dump和運行程序不一樣,缺少一兩個Dll沒有任何問題。
如果真的需要怎麼辦?
那就看下面一節。
3。符號文件
符號文件現在主要是指PDB文件。
如果沒有符號文件,那麼調試的時候可能導致堆棧錯誤。
如果你丟失了這個發布里邊你編譯出來的那些exe和dll的PDB,那麼這個損失是嚴重的,你重新編譯出來的版本是不能使用的,乖乖的看反匯編自己猜位置吧。不過也有特殊的方法可以彌補,這里不討論。所以一定要在發布的時候把你自己的所有PDB文件都備份起來。
⑨ 怎樣用GDB調試core文件
一般這種情況都是因為數組越界訪問,空指針或是野指針讀寫造成的。程序小的話還比較好辦,對著源代碼仔細檢查就能解決。但是對於代碼量較大的程序,里邊包含N多函數調用,N多數組指針訪問,這時想定位問題就不是很容易了(此時牛人依然可以通過在適當位置打printf加二分查找的方式迅速定位:P)。懶人的話還是直接GDB搞起吧。 神馬是Core Dump文件偶爾就能聽見某程序員同學抱怨「擦,又出Core了!」。簡單來說,core mp說的是操作系統執行的一個動作,當某個進程因為一些原因意外終止(crash)的時候,操作系統會將這個進程當時的內存信息轉儲(mp)到磁碟上1。產生的文件就是core文件了,一般會以core.xxx形式命名。 如何產生Core Dump 發生doremp一般都是在進程收到某個信號的時候,Linux上現在大概有60多個信號,可以使用 kill -l 命令全部列出來。sagi@sagi-laptop:~$ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX針對特定的信號,應用程序可以寫對應的信號處理函數。如果不指定,則採取默認的處理方式, 默認處理是coremp的信號如下:3)SIGQUIT 4)SIGILL 6)SIGABRT 8)SIGFPE 11)SIGSEGV 7)SIGBUS 31)SIGSYS 5)SIGTRAP 24)SIGXCPU 25)SIGXFSZ 29)SIGIOT 我們看到SIGSEGV在其中,一般數組越界或是訪問空指針都會產生這個信號。另外雖然默認是這樣的,但是你也可以寫自己的信號處理函數改變默認行為,更多信號相關可以看參考鏈接33。 上述內容只是產生coremp的必要條件,而非充分條件。要產生core文件還依賴於程序運行的shell,可以通過ulimit -a命令查看,輸出內容大致如下:sagi@sagi-laptop:~$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheling priority (-e) 20 file size (blocks, -f) unlimited pending signals (-i) 16382 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) unlimited virtual memory (kbytes, -v) unlimited file locks (-x) unlimited 看到第一行了吧,core file size,這個值用來限制產生的core文件大小,超過這個值就不會保存了。我這里輸出是0,也就是不會保存core文件,即使產生了,也保存不下來==! 要改變這個設置,可以使用ulimit -c unlimited。 OK, 現在萬事具備,只缺一個能產生Core的程序了,介個對C程序員來說太容易了。#include ; #include ; int crash() { char *xxx = "crash!!"; xxx[1] = 'D'; // 寫只讀存儲區! return 2; } int foo() { return crash(); } int main() { return foo(); } 上手調試 上邊的程序編譯的時候有一點需要注意,需要帶上參數-g, 這樣生成的可執行程序中會帶上足夠的調試信息。編譯運行之後你就應該能看見期待已久的「Segment Fault(core mped)」或是「段錯誤 (核心已轉儲)」之類的字眼了。看看當前目錄下是不是有個core或是core.xxx的文件。祭出linux下經典的調試器GDB,首先帶著core文件載入程序:gdb exefile core,這里需要注意的這個core文件必須是exefile產生的,否則符號表會對不上。載入之後大概是這個樣子的:sagi@sagi-laptop:~$ gdb coremp core Core was generated by ./coremp'. Program terminated with signal 11, Segmentation fault. #0 0x080483a7 in crash () at coremp.c:8 8 xxx[1] = 'D'; (gdb)我們看到已經能直接定位到出core的地方了,在第8行寫了一個只讀的內存區域導致觸發Segment Fault信號。在載入core的時候有個小技巧,如果你事先不知道這個core文件是由哪個程序產生的,你可以先隨便找個代替一下,比如/usr/bin/w就是不錯的選擇。比如我們採用這種方法載入上邊產生的core,gdb會有類似的輸出:sagi@sagi-laptop:~$ gdb /usr/bin/w core Core was generated by ./coremp'. Program terminated with signal 11, Segmentation fault. #0 0x080483a7 in ? () (gdb)可以看到GDB已經提示你了,這個core是由哪個程序產生的。 GDB 常用操作 上邊的程序比較簡單,不需要另外的操作就能直接找到問題所在。現實卻不是這樣的,常常需要進行單步跟蹤,設置斷點之類的操作才能順利定位問題。下邊列出了GDB一些常用的操作。 啟動程序:run
設置斷點:b 行號|函數名
刪除斷點:delete 斷點編號
禁用斷點:disable 斷點編號
啟用斷點:enable 斷點編號
單步跟蹤:next 也可以簡寫 n
單步跟蹤:step 也可以簡寫 s
列印變數:print 變數名字
設置變數:set var=value
查看變數類型:ptype var
順序執行到結束:cont
順序執行到某一行: util lineno列印堆棧信息:bt
⑩ 如何調試編譯時註解處理器AnnotationProcessor
ALU內含電路系統,易於輸出端完成簡單的普通運算和邏輯運算(比如加法和位元運算)。如果加法運算產生一個對該CPU處理而言過大的結果,在標志暫存器里可能會設置運算溢出(Arithmetic Overflow)標志。
