Valgrind nie może stworzyć plików tymczasowych

Valgrind nie może stworzyć plików tymczasowych

Wątek przeniesiony 2014-09-01 12:41 z Newbie przez bogdans.

GA
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 9 lat
  • Postów:32
0

Siema.
Próbuje odpalić valgrindem aplikację na androidzie, ale dostaje takie komunikaty

Kopiuj
 08-28 15:20:42.990: I/dalvikvm(25599): Exec: /system/bin/sh -c logwrapper sh /data/local/start_valgrind.sh /system/bin/app_process /system/bin --application '--nice-name=com.Claw.Circle' com.android.internal.os.WrapperInit 28 7 'android.app.ActivityThread'
08-28 15:20:43.010: I/sh(25611): /data/local/start_valgrind.sh[2]: 
08-28 15:20:43.010: I/sh(25611): /data/local/start_valgrind.sh[4]: 
08-28 15:20:43.010: I/sh(25611): /data/local/start_valgrind.sh[7]: 
08-28 15:20:43.010: I/sh(25611): /data/local/start_valgrind.sh[10]: 
08-28 15:20:43.010: I/sh(25611): /data/local/start_valgrind.sh[12]: 
08-28 15:20:43.020: I/sh(25611): ==25612== VG_(mkstemp): failed to create temp file: /data/data/com.Claw.Circle
08-28 15:20:43.020: I/sh(25611): ==25612== VG_(mkstemp): failed to create temp file: /data/data/com.Claw.Circle
08-28 15:20:43.020: I/sh(25611): ==25612== VG_(mkstemp): failed to create temp file: /data/data/com.Claw.Circle
08-28 15:20:43.020: I/sh(25611): ==25612== VG_(mkstemp): failed to create temp file: /data/data/com.Claw.Circle
08-28 15:20:43.020: I/sh(25611): ==25612== VG_(mkstemp): failed to create temp file: /data/data/com.Claw.Circle
08-28 15:20:43.020: I/sh(25611): ==25612== VG_(mkstemp): failed to create temp file: /data/data/com.Claw.Circle
08-28 15:20:43.020: I/sh(25611): ==25612== VG_(mkstemp): failed to create temp file: /data/data/com.Claw.Circle
08-28 15:20:43.020: I/sh(25611): ==25612== VG_(mkstemp): failed to create temp file: /data/data/com.Claw.Circle
08-28 15:20:43.020: I/sh(25611): ==25612== VG_(mkstemp): failed to create temp file: /data/data/com.Claw.Circle
08-28 15:20:43.020: I/sh(25611): ==25612== VG_(mkstemp): failed to create temp file: /data/data/com.Claw.Circle
08-28 15:20:43.020: I/sh(25611): ==25612== VG_(mkstemp): failed to create temp file: /data/data/com.Claw.Circle
08-28 15:20:43.020: I/sh(25611): valgrind: Startup or configuration error:
08-28 15:20:43.020: I/sh(25611): valgrind:    Can't create client cmdline file in 
08-28 15:20:43.030: I/sh(25611): valgrind: Unable to start up properly.  Giving up.
08-28 15:20:43.030: I/logwrapper(25611): sh terminated by exit(1)

Co do aplikacji to jest to przykładowa HelloJni z paczki NDK, a skrypty są niemal identyczne jak w tym poście http://stackoverflow.com/a/19235439/3975769

MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:około godziny
0
  1. zdecydowanie to nie jest problem typu Newbie
  2. po co ci valgrind? Jakich błędów szukasz?

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
GA
Valgrind ma służyć do znajdowania wycieków w androidowych apkach napisanych w C++.
MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:około godziny
0

Może upewnij się, że jest utworzony katalog "/data/data/com.Claw.Circle" a jeśli jest to sprawdź jakie ma atrybuty i do jakiej grupy należy.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
GA
Tak jest utworzony, zresztą próbowałem dla innych katalogów, i dla innych aplikacji co zresztą widać bo się pomyliłem i zamiast logów HelloJni wkleiłem logi z innej aplikacji, ale to nie ma żadnego znaczenia bo to ten sam błąd, odpaliłem też valgrinda dla ls żeby sprawdzić czy w ogóle działa i zadziałał.
flowCRANE
@Gancus - przypominam, że dyskusja ma się odbywać w postach, nie w komentarzach; Spójrz - @MarekR22 musi przez Ciebie pisać swoje posty jeden pod drugim...
GA
Przepraszam, to już się nie powtórzy.
GA
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 9 lat
  • Postów:32
0

Ok poradziłem sobie chyba. wystarczyło w skrypcie zakomentować ten export TMPDIR=... i usunąć ' z VGPARAMS

--EDIT--
Ok, usuwanie ' chyba jednak nie było dobrym pomysłem, ale jak to zostawie to wyrzuca mi

Kopiuj
08-29 11:32:58.370: I/sh(6127): valgrind: Bad option: --show-reachable=yes
08-29 11:32:58.370: I/sh(6127): valgrind: Invalid boolean value 'yes

show-reachable to ostatni parametr, a bez ' nie czyta już od drugiego parametru.

edytowany 1x, ostatnio: Gancus
MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:około godziny
0

Pokaz zawartość skryptu.
Co ci drukuje

Kopiuj
ls -al /data/data/com.Claw.Circle

Niepokoi mnie też to, że w błędzie masz tylko "/data/data/com.Claw.Circle", a to jest katalog a nie plik, oczekiwałbym raczej że to będzie to raczej coś w stylu: "/data/data/com.Claw.Circle/valgrind_proc_30533_cmdline_86662832"

Zainteresuj się też, Address Sanitizer, jest to lepsze rozwiązanie niż valgrind, a z tego co widziałem w internecie można zaleźć instrukcję dla androida.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: MarekR22
GA
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 9 lat
  • Postów:32
0
Kopiuj
#!/system/bin/sh

PACKAGE="com.Claw.Circle"

# Callgrind tool
#VGPARAMS=-v --error-limit=no --trace-children=yes --log-file=/sdcard/valgrind.log.%p --tool=callgrind --callgrind-out-file=/sdcard/callgrind.out.%p

# Memcheck tool
VGPARAMS='-v --error-limit=no --trace-children=yes --log-file=/sdcard/valgrind.log.%p --tool=memcheck --leak-check=full --show-reachable=yes'

export TMPDIR=/data/data/$PACKAGE
echo $VGPARAMS
exec /data/local/Inst/bin/valgrind $VGPARAMS $* 
Kopiuj
 @echo off
set PACKAGE=com.Claw.Circle
:: Memcheck tool
::set VGPARAMS=-v --error-limit=no --leak-check=full
adb push start_valgrind.sh /data/local/
adb shell chmod 777 /data/local/start_valgrind.sh

adb root
adb shell setprop wrap.%PACKAGE% "logwrapper sh /data/local/start_valgrind.sh"
::adb shell setprop wrap.%PACKAGE% "logwrapper /data/local/Inst/bin/valgrind %VGPARAMS%"
adb shell am force-stop %PACKAGE%
adb shell am start -a android.intent.action.MAIN -n %PACKAGE%/com.Claw.Android.ClawRootActivity

Kopiuj
root@android:/ # ls -al /data/data/com.Claw.Circle
ls -al /data/data/com.Claw.Circle
drwxrwx--x u0_a64   u0_a64            2014-08-27 10:20 cache
drwxrwx--x u0_a64   u0_a64            2014-08-27 10:20 files
lrwxrwxrwx install  install           2014-08-29 11:03 lib -> /data/app-lib/com.
Claw.Circle-2

Jak w tym drugim skrypcie odkomentuje VGPARAMS i adb shell setprop wrap.%PACKAGE% "logwrapper /data/local/Inst/bin/valgrind %VGPARAMS%" zamiast "logwrapper sh /data/local/start_valgrind.sh" to będzie działać, ale wartość setprop może mieć maksymalnie 91 znaków, czyli na same VGPARAMS zostaje 50, więc trzeba użyć skryptu, chyba że jest jakiś lepszy sposób na ominięcie tego.

GA
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 9 lat
  • Postów:32
0

Ok, już wiem co było nie tak. Wystarczyło do drugiego skryptu dodaćdos2unix start_valgrind.sh

MarekR22
z tego wynika, że edytowałeś ten plik notepadem i stąd cały kłopot, bo dos2unix tylko konwertuje plik tekstowy do standardu unixowego
GA
dokładniej to gvimem, tyle że na windowsie, ale nvm ważne że działa

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.