2012-02-03 29 views
24

Tôi đã tìm kiếm tuần cuối cùng tìm cách trả lời câu hỏi này.Cách bắt đầu một ứng dụng android với valgrind

Làm cách nào để bắt đầu một ứng dụng Android với valgrind? Tôi biết tôi có thể bắt đầu một ứng dụng với lệnh 'am', nhưng nó bắt đầu ứng dụng và thoát.

Tôi đang viết một ứng dụng sử dụng NDK cho mã C gốc và tôi cần kiểm tra xem có lỗi bộ nhớ đáng ngờ hay không.

Chỉnh sửa:

Tôi đã học được nhiều hơn một chút. Bạn có thể "bọc" một ứng dụng với một kịch bản lệnh shell.

Đây là shell script Tôi đang sử dụng:

#!/system/bin/sh 
VGPARAMS='--error-limit=no' 
export TMPDIR=/data/data/com.starlon.froyvisuals 
exec /data/local/Inst/bin/valgrind $VGPARAMS $* 

Và đây là setprop:

adb shell setprop wrap.com.starlon.froyvisuals "logwrapper valgrind" 

Và dưới đây là cách tôi bắt đầu ứng dụng:

adb shell am start -n com.starlon.froyvisuals/.FroyVisuals 

tôi không nghĩ rằng điều này là đúng, bởi vì tôi không chắc chắn nơi kịch bản shell phù hợp và tôi không thấy bất cứ điều gì trong logcat. Bất kỳ gợi ý nào?

Chỉnh sửa2: Oh tập lệnh trình bao được chỉ định bằng lệnh "setprop" ở trên. Vì vậy,

adb shell setprop wrap.com.starlon.froyvisuals "logwrapper /data/local/val.sh" 

Tôi vẫn không thấy bất kỳ thứ gì trong logcat.

+1

Đối với làm thế nào để chạy ứng dụng của bạn thông qua Valgrind thấy kịch bản của tôi từ:. http://stackoverflow.com/a/19235439/313113 – bitek

Trả lời

6

Bạn có thể thử để xóa logcat đầu tiên

prompt# adb logcat -c 
prompt# adb logcat 

Bạn sẽ có thể để xem các bản ghi sắp tới trong khi bạn kích hoạt ứng dụng của bạn.

am start -a android.intent.action.MAIN -n com.example.hellojni/.HelloJni 

Tôi gặp sự cố với tập lệnh shell và tôi đã sử dụng mã này để thay thế.

adb shell setprop wrap.com.example.hellojni "logwrapper /data/local/Inst/bin/valgrind" 

Bạn sẽ có thể vượt qua trong các thông số ngay sau khi valgrind

-1

có, nhưng bạn nên sử dụng

adb shell setprop wrap.com.example.hellojni "logwrapper ./ data/local/Inst/bin/valgrind "
/\ ---- cho shell (.) là quan trọng !!!

còn nếu bạn muốn sử dụng một số cấu hình của valgrind công cụ của - sử dụng này:

adb shell setprop wrap.com.example.hellojni "logwrapper ./data/local/Inst/bin/valgrind --tool = massif (... cấu hình massif atc ...) "

1

Tôi cũng gặp sự cố này. Trong tình huống của tôi, tôi chỉnh sửa "val.sh "trong cửa sổ & adb đẩy nó vào trình mô phỏng, nhưng kịch bản lệnh shell không thể được thực thi đúng cách. Sau đó, tôi sử dụng kiểu chữ" * "> val.sh để tạo" val.sh "và Nó hoạt động tốt.

Vì vậy, đầu tiên bạn nên chắc chắn rằng "val.sh" có thể được hiểu một cách chính xác

Các vấn đề liên quan