strace라는 디버깅 툴을 실제 기기 안에서 사용하려고 합니다.
몇 번의 삽질 끝에 adb shell 상에서는 명령어가 잘 먹히고, 결과값 또한 잘 나옵니다.
하지만 어플리케이션에서 명령어를 실행하면, runtime.exec(cmd) 부분에서 예외처리됩니다.
기기는 루팅한 상태입니다. strace -p <pid> 외에 다른 명령어( ex) ls )는 잘 되는데.. 뭐가 문제인지 잘 모르겠네요..
아래는 코드 일부입니다.
bt_getlog.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
try {
Runtime runtime = Runtime.getRuntime();
Process process;
int id= android.os.Process.myPid();
String cmd = "strace -p " + id;
process = runtime.exec(cmd);
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
StringBuffer log = new StringBuffer();
int length;
char[] buffer = new char[4096];
while((length = br.read(buffer)) > 0){
log.append(buffer, 0, length);
}
tv_getlog.setText(log.toString());