2012-03-20 87 views
3

我是新來的,我希望我可以使用Pocketsphinx(使用NDK)獲得一些Android應用程序的幫助。運行Pocketsphinx演示項目的問題,分段錯誤?

我正在做一個學校項目的工作,我們正在製作一個GPS,我們想要添加一些離線語音識別,Pocketsphinx似乎是要走的路,所以我下載了libraris sphinxbase和pocketsphinx以及demoproject他們有。

安靜了很多修復和嘗試(首先安裝和習慣Ubuntu,修復了我試圖編譯庫時遇到的錯誤,嘗試使用NDK構建庫以獲取.so文件的錯誤,這個項目的問題沒有爲Android提供正確的庫,並將其轉換爲2.1項目,以便在手機上進行測試)我能夠讓程序運行(儘管由於某種原因,我必須在出現3次前將它拉上2次)在我的手機上)。

當我嘗試使用演示項目時,出現我的問題,對於那些不知道它如何看起來只是一個簡單的文本區域和按鈕,你按下按鈕,所以它開始錄製,然後你說話和當我點擊這個按鈕關閉時,輸入的語音應該在區域中顯示爲文本。它不會崩潰,但進程死亡,但我沒有收到堆棧跟蹤。從我從調試信息中可以看到它開始錄製過程,但之後崩潰,我的猜測是它一旦開始使用本機代碼開始工作就會崩潰。

從我得到的不清楚的調試信息中我可以瞭解到,Native環境正在關閉,我從標籤Zygote的調試中獲得一條消息,並且消息是「Process X terminated by signal(11)」。從我的搜索中我瞭解到,這很可能意味着分段錯誤(SIGSEGV)。

這是就我所知,我沒有真正瞭解分段故障的含義或如何解決這個問題。在下面,我將添加日誌的一部分,這是我在程序死亡之前看到的,如果您需要日誌中的更多信息,請告訴我如何獲取它,因爲我不確定哪些信息會有幫助。

我正在使用Eclipse和Android插件的Ubuntu 11.10,我的手機是索尼愛立信Xperia,如果這是相關的,運行一些索尼愛立信版本的Android 2.1,獅身人面像庫是獅身人面像項目網站的最新版本。

希望這裏有人能給我一些方法來繼續這個工作,我主要是一個Java開發人員,但我已經在C++做了一些工作,所以如果我必須我也會深入研究C代碼,但我希望它不會那麼遠。

這裏是日誌摘錄:

03-20 11:37:22.676: D/edu.cmu.pocketsphinx.demo.RecognizerTask(385): signalling START 
03-20 11:37:22.676: D/edu.cmu.pocketsphinx.demo.RecognizerTask(385): signalled START 
03-20 11:37:22.676: D/edu.cmu.pocketsphinx.demo.RecognizerTask(385): gotSTART 
03-20 11:37:22.676: D/edu.cmu.pocketsphinx.demo.RecognizerTask(385): START 
03-20 11:37:22.806: D/edu.cmu.pocketsphinx.demo.PocketSphinxDemo(385): Showing Dialog 
03-20 11:37:22.826: I/AudioHardwareQSD(1066): AudioHardware PCM record is going to standby. 
03-20 11:37:22.836: I/AudioHardwareQSD(1066): AudioHardware PCM record is going to standby. 
03-20 11:37:22.836: D/dalvikvm(385): +++ not scanning '/system/lib/libwebcore.so' for 'Decoder_startUtt__SWIG_0' (wrong CL) 
03-20 11:37:22.836: D/dalvikvm(385): +++ not scanning '/system/lib/libexif.so' for 'Decoder_startUtt__SWIG_0' (wrong CL) 
03-20 11:37:22.846: I/DEBUG(1063): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 
03-20 11:37:22.846: I/DEBUG(1063): Build fingerprint: 'SEMC/X10i_1234-9753/X10i/es209ra:2.1-update1/2.1.A.0.435/TP7d:user/release-keys' 
03-20 11:37:22.846: I/DEBUG(1063): pid: 385, tid: 395 >>> edu.cmu.pocketsphinx.demo <<< 
03-20 11:37:22.846: I/DEBUG(1063): signal 11 (SIGSEGV), fault addr 0000001c 
03-20 11:37:22.846: I/DEBUG(1063): r0 00000000 r1 00000000 r2 00000154 r3 8c6d703c 
03-20 11:37:22.846: I/DEBUG(1063): r4 00000000 r5 81356e14 r6 475c8d6c r7 00000000 
03-20 11:37:22.846: I/DEBUG(1063): r8 475c8d6c r9 00000154 10 43117f40 fp 00123e08 
03-20 11:37:22.846: I/DEBUG(1063): ip 8130c191 sp 475c8d18 lr 8130c1a1 pc 8130d568 cpsr 40000030 
03-20 11:37:22.866: I/DEBUG(1063):   #00 pc 0000d568 /data/data/edu.cmu.pocketsphinx.demo/lib/libpocketsphinx_jni.so 
03-20 11:37:22.866: I/DEBUG(1063):   #01 pc 0000c19c /data/data/edu.cmu.pocketsphinx.demo/lib/libpocketsphinx_jni.so 
03-20 11:37:22.876: I/DEBUG(1063):   #02 pc 0000edb4 /system/lib/libdvm.so 
03-20 11:37:22.876: I/DEBUG(1063): code around pc: 
03-20 11:37:22.876: I/DEBUG(1063): 8130d558 447db089 1c0458ab 681b1c0f 93074691 
03-20 11:37:22.876: I/DEBUG(1063): 8130d568 2b0069c3 e0d3d100 36301c06 f0331c30 
03-20 11:37:22.876: I/DEBUG(1063): code around lr: 
03-20 11:37:22.876: I/DEBUG(1063): 8130c190 b083b500 21001c10 93019200 f9d6f001 
03-20 11:37:22.876: I/DEBUG(1063): 8130c1a0 bd00b003 b084b510 93019200 23001c10 
03-20 11:37:22.876: I/DEBUG(1063): 8130c1b0 93022400 f0009403 f030fe3b 9903fc47 
03-20 11:37:22.876: I/DEBUG(1063): stack: 
03-20 11:37:22.876: I/DEBUG(1063):  475c8cd8 7fffffff 
03-20 11:37:22.876: I/DEBUG(1063):  475c8cdc ab227f0f /system/lib/libmedia.so 
03-20 11:37:22.876: I/DEBUG(1063):  475c8ce0 afe3db7c 
03-20 11:37:22.876: I/DEBUG(1063):  475c8ce4 afe0f130 /system/lib/libc.so 
03-20 11:37:22.876: I/DEBUG(1063):  475c8ce8 afe3db7c 
03-20 11:37:22.876: I/DEBUG(1063):  475c8cec afe0f130 /system/lib/libc.so 
03-20 11:37:22.876: I/DEBUG(1063):  475c8cf0 00000000 
03-20 11:37:22.876: I/DEBUG(1063):  475c8cf4 afe0f048 /system/lib/libc.so 
03-20 11:37:22.876: I/DEBUG(1063):  475c8cf8 afe3d9c4 
03-20 11:37:22.876: I/DEBUG(1063):  475c8cfc 00002004 
03-20 11:37:22.876: I/DEBUG(1063):  475c8d00 00000001 
03-20 11:37:22.876: I/DEBUG(1063):  475c8d04 078bcd20 
03-20 11:37:22.876: I/DEBUG(1063):  475c8d08 00000209 
03-20 11:37:22.886: I/DEBUG(1063):  475c8d0c b0000463 /system/bin/linker 
03-20 11:37:22.886: I/DEBUG(1063):  475c8d10 df002777 
03-20 11:37:22.886: I/DEBUG(1063):  475c8d14 e3a070ad 
03-20 11:37:22.886: I/DEBUG(1063): #00 475c8d18 00000000 
03-20 11:37:22.886: I/DEBUG(1063):  475c8d1c afe0f048 /system/lib/libc.so 
03-20 11:37:22.886: I/DEBUG(1063):  475c8d20 afe3d9c4 
03-20 11:37:22.886: I/DEBUG(1063):  475c8d24 0014bac0 [heap] 
03-20 11:37:22.886: I/DEBUG(1063):  475c8d28 003952b8 [heap] 
03-20 11:37:22.886: I/DEBUG(1063):  475c8d2c 0000a000 [heap] 
03-20 11:37:22.886: I/DEBUG(1063):  475c8d30 ad00ef40 /system/lib/libdvm.so 
03-20 11:37:22.886: I/DEBUG(1063):  475c8d34 8c6d703c 
03-20 11:37:22.886: I/DEBUG(1063):  475c8d38 0014ba78 [heap] 
03-20 11:37:22.886: I/DEBUG(1063):  475c8d3c 475c8d6c 
03-20 11:37:22.886: I/DEBUG(1063):  475c8d40 43117f54 
03-20 11:37:22.886: I/DEBUG(1063):  475c8d44 475c8d90 
03-20 11:37:22.886: I/DEBUG(1063):  475c8d48 00000004 
03-20 11:37:22.886: I/DEBUG(1063):  475c8d4c 458ad8c8 /mspace/dalvik-heap/2 (deleted) 
03-20 11:37:22.886: I/DEBUG(1063):  475c8d50 43117f60 
03-20 11:37:22.886: I/DEBUG(1063):  475c8d54 8130c1a1 /data/data/edu.cmu.pocketsphinx.demo/lib/libpocketsphinx_jni.so 
03-20 11:37:22.886: I/DEBUG(1063): #01 475c8d58 00000000 
03-20 11:37:22.886: I/DEBUG(1063):  475c8d5c 00000000 
03-20 11:37:22.886: I/DEBUG(1063):  475c8d60 430fdfae /data/dalvik-cache/[email protected]@[email protected] 
03-20 11:37:22.886: I/DEBUG(1063):  475c8d64 ad00edb8 /system/lib/libdvm.so 
03-20 11:37:23.026: D/Zygote(1065): Process 385 terminated by signal (11) 
03-20 11:37:23.056: I/ActivityManager(1140): Process edu.cmu.pocketsphinx.demo (pid 385) has died. 
03-20 11:37:23.056: I/UsageStats(1140): Unexpected resume of com.android.launcher while already resumed in edu.cmu.pocketsphinx.demo 
03-20 11:37:23.056: I/WindowManager(1140): WIN DEATH: Window{45f50c48 edu.cmu.pocketsphinx.demo/edu.cmu.pocketsphinx.demo.PocketSphinxDemo paused=false} 
03-20 11:37:23.086: I/AudioHardwareQSD(1066): AudioHardware PCM record is going to standby. 
03-20 11:37:23.116: W/InputManagerService(1140): Got RemoteException sending setActive(false) notification to pid 385 uid 10106 

我一直在試圖尋找一個答案,多數線程我發現問在日誌文件中把目光從應用程序,這些是線程通常結束,我的項目doens't不給我一個日誌文件(即使代碼來創建一個)。我不知道下一步該怎麼看,我希望這裏有人能幫我一把。

回答

1

這是據我已經得到了,我有什麼 段錯誤含義或如何。如果你想成爲一個軟件開發人員,你應該更好地學習解決此問題

沒有真正理解它詳細。您可以從維基百科找到一些切入點

http://en.wikipedia.org/wiki/Segmentation_fault

一般段錯誤意味着在你的應用程序或配置錯誤

最線程我發現問從日誌文件中查找應用 和那些通常是在線程結束,我的項目好好嘗試一下給我 一個日誌文件(即使創建的代碼是存在的)

這對你來說也是一個非常有效的建議。您需要找出爲什麼沒有創建文件pocketsphinx.log。它的路徑是在源代碼中配置的。很可能它是在SD卡上創建的,但你可以配置其他位置。這個日誌的內容會告訴你什麼是你的應用程序的問題。

+0

我會閱讀分段錯誤,並調查爲什麼日誌文件沒有被創建,希望我能弄清楚分割發生的地方,是我爲此調整的調試信息嗎? – 2012-03-21 11:08:53

+1

目前的信息是不夠的。您需要訪問該日誌文件。 – 2012-03-21 11:12:54

+0

看起來它根本不是seg故障,但我得到了日誌文件(由於沒有製作文件夾結構,它們沒有被製作),它告訴我languge模型文件有些問題,有些該文件是空的,重新複製這些文件使其工作,感謝您的幫助。 – 2012-03-22 13:57:13