我有一個嵌入式Linux(BusyBox v1.12.4)上運行的Java應用程序。我使用的是CDC 1.1,VM(cvm)的版本是CDC HI phoneme_advanced-Core-1.1.2-b111。嵌入式Java應用程序崩潰,沒有例外,沒有明顯的原因
應用程序的主要目的是收集一些數據,並通過GPRS發送(使用Apache公共圖書館的FTPClient)
應用程序運行良好,然後最近我加入之前壓縮文件的能力發送它。下面是一個壓縮文件中的代碼:
public static boolean compressFile(String file, String fileCompressed)
{
boolean result = false;
try
{
Process process = Runtime.getRuntime().exec("tar -czvf " + fileCompressed + " " + file);
System.err.println("Compression in progress");
int returnValue = process.waitFor();
System.err.println("Finished compression");
BufferedReader stderror = new BufferedReader(new InputStreamReader(process.getErrorStream()));
String s;
s = stderror.readLine();
if (s == null)
{
result = true;
} else
{
result = false;
System.err.println(s);
}
} catch (IOException e)
{
result = false;
Log.getInstance().newMessage(e.getMessage(), Log.ERROR);
} catch (InterruptedException e)
{
result = false;
Log.getInstance().newMessage(e.getMessage(), Log.ERROR);
}
return result;
}
添加此功能後,啓動應用程序崩潰!該日誌沒有包含任何內存錯誤或異常,它運行的系統缺少正確的配置,所以系統日誌也沒有顯示任何內容(設備製造商告訴我,它將在即將發佈的版本中提供)。我甚至無法在調試模式下啓動虛擬機!
我必須補充說,在壓縮過程中應用程序不會崩潰,它在執行過程中會隨機崩潰。問題是隻有啓用壓縮時纔會崩潰!
以前有人看過這個嗎?有沒有人有關於如何調試/解決這個問題的想法?
您可能已通過添加該方法在應用程序內的其他位置更改了某些未初始化的值。通常,當「未使用的方法或函數或變量導致程序行爲改變」是問題時,根本原因是未初始化的變量。原因在於你之前很幸運,而且這個未初始化的變量有一個爲你工作的值。 – 2012-05-19 11:55:42