Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [Java/C++] Debug JNI

  1. #1

    [Java] Debug JNI

    Salve,
    ho un problema che mi affligge da 2 giorni e che non riesco a risolvere...
    Ho un applicazione scritta in Java e C++ e la comunicazione avviene tramite JNI.

    Adesso ho concluso la scrittura di entrambe le parti, in c++ creo una dll che viene caricata da Java.
    Il problema è che durante l'esecuzione mi viene lanciato il seguente errore:

    codice:
    #
    # A fatal error has been detected by the Java Runtime Environment:
    #
    #  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x51185df9, pid=4508, tid=4604
    #
    # JRE version: 7.0_02-b13
    # Java VM: Java HotSpot(TM) Client VM (22.0-b10 mixed mode windows-x86 )
    # Problematic frame:
    # C  [indexMTreeShiatsuShot.dll+0x5df9]
    #
    # Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
    #
    # An error report file with more information is saved as:
    # C:\Users\david\Desktop\Sviluppo\NetBeansProjects\WindsurfVideo\hs_err_pid4508.log
    #
    # If you would like to submit a bug report, please visit:
    #   http://bugreport.sun.com/bugreport/crash.jsp
    # The crash happened outside the Java Virtual Machine in native code.
    # See problematic frame for where to report the bug.
    #
    Sospetto che sia un errore nella parte in C++ del progetto solo che senza un debug non riesco a capire dove.

    Sto usando netbeans 7.2 su un sistema Win7 a 64bit

    C'è per caso un modo per fare il debug delle chiamate native ?


    Grazie

  2. #2
    Da un debugger nativo (es. Visual Studio o WinDbg) devi fare "attach to process" ("collega al processo" o roba del genere) sul processo di Java prima che arrivi alla parte critica. O anche, lanciare direttamente il processo di Java dal debugger nativo.
    Per capirci qualcosa però:
    - o usi la versione debug della dll;
    - o quantomeno, se il crash avviene solo con la versione release, devi abilitare la generazione dei simboli di debug (il file .pdb), altrimenti il debugger non ci capisce niente (anche se anche con il pdb fare il debug di binari ottimizzati è spesso un casino).
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    ok, ho capito che con il solo netbeans non si riesce...
    adesso il problema è il seguente, ho scaricato Windbg il problema è che non so che passi eseguire per fargli fare il debug lato c++

  4. #4
    Originariamente inviato da tiduslion
    adesso il problema è il seguente, ho scaricato Windbg il problema è che non so che passi eseguire per fargli fare il debug lato c++
    Devi dirgli di agganciarsi al processo java in esecuzione; il problema è che WinDbg non è molto intuitivo da utilizzare (è sostanzialmente un frontend "leggero" al debugger a linea di comando di Windows). Con VS sarebbe sicuramente un po' più semplice (vedi qui).
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.