2010-09-08 11 views
6

J'ai un jar exécutable avec la source compilée et je veux le déboguer en utilisant jdb (pas d'autre débogueur disponible dans cet environnement malheureusement).Utilisez un pot avec la source comme source pour jdb?

Je suis capable de déboguer avec

jdb -classpath "${JAR_FILE}:${CLASS_PATH}" ${MAIN_CLASS} ${ARGS} 

Comment puis-je obtenir JDB utiliser la source qui est intégrée dans le fichier jar?

Notes: Java 6, AIX, ksh

Répondre

5

Il ne peut pas être possible, comme indiqué dans this (very old) post sur les forums.

+5

Nice. Le code source de jdb semble ignorer explicitement les entrées * .jar et * .zip de 'sourcepath'. – kschneid

+0

@kschneid, Merci pour vérifier. Restez dans le coin, nous avons plus besoin de vous. –

+0

@kschneid Maintenant qu'Oracle a pris le contrôle de Sun, j'ai du mal à trouver un lien pour le code source de jdb :-(, mais je vais vous prendre au mot ... Lame –

0

N'a pas essayé personnellement, mais peut-être l'option sourcepath permettra à des fichiers JAR: jdb -sourcepath ${JAR_FILE} ...

7

Si jdb ignore les entrées * .jar et * .zip pour sourcepath, vous pouvez peut-être créer un fichier batch pour développer la source du fichier cible dans un répertoire temporaire et pointer vers sourcepath.

Quelque chose comme ça

MYDEBUGDIR=/temp/source/mydebug 
jar -xf target.jar -C $MYDEBUGDIR 
jdb -sourcepath ${MYDEBUGDIR} -classpath "${JAR_FILE}:${CLASS_PATH}" ${MAIN_CLASS} ${ARGS} 
rmdir -r $MYDEBUGDIR 

De cette façon, la source de débogage est en phase avec le pot et il nettoie après lui-même.