Wednesday, November 9, 2011

Debugowanie DLLi wywoływanych przez JNI z javy

Ku mojemu wielkiemu zaskoczeniu da się! I to bardzo łatwo.

Warunkiem koniecznym jest, naturalnie, jak to przy debugowaniu, posiadanie źródeł kodu DLLki.
Należy uruchomić oba środowiska (ulubione IDE Javy oraz ulubione IDE C/C++). Ja ulubionego C/C++ nie mam, ale użyłem Microsoft Visual C++ 2010 Express.

Zaczynamy od Javy. Stawiamy breakpoint przed wywołaniem kodu natywnego i uruchamiamy aplikację w javie.
Przełączamy się do IDE C/C++, stawiamy breakpoint wewnątrz natynwej metody i wybieramy Debug->attach to process. Wybieramy nasz proces (zapewne java lub javaw). Po podłączeniu się, w IDE Javowym puszczamy program dalej i w tym momencie IDE C/C++ łapie wywołanie. Dalej jest już prosta ścieżka, bo debugujemy program w C/C++.

Istnieje możliwość debugowania programu C/C++ w Eclipse CDT, wtedy należy stworzyć nową konfigurację debuggera "C/C++ Attach to a Local Application". Ale nie robiłem tego.

Polecam wpisy
Debugging Java Native Interface (JNI) DLLs using Microsoft Visual C++ 2008 Express and NetBeans 6.9
Debugging JNI C and Java code in Eclipse

2 comments:

  1. Jeszcze nie zdradzam. Będzie hardware mojej produkcji i software (bazujące na OS). Komercyjny produkt. Premiera, mam nadzieję, jeszcze w tym roku.

    ReplyDelete