Профилиров Netbeans: навсегда подключиться к цели vm
Я пытаюсь подключить профилировщик Netbeans к моему Java-проекту, но он застревает с Connecting to the target vm
.
Я нашел этот старый отчет об ошибке, но это уже исправлено. Моя версия 7.1.2 с Java 1.7.0_04 на Windows 7.
Я попытался отключить брандмауэр и запустить Netbeans как администратор, но все же у меня такая же проблема.
Немного странно, что калибровка работает нормально.
У меня такое чувство, что это проблема с Java 7. Потому что, если я смотрю на profiler\lib\deployed
, нет папки jdk17. Только jdk16 и jdk15.
Любые мысли?
Ответы
Ответ 1
Я обнаружил, что работает профайлер, если я прикрепляю его динамически. Для этого вам нужно сначала запустить приложение (с точкой останова). Затем вы нажмете "Профиль" > "Прикрепить профилировщик"... В верхней части выберите свой проект и прикрепите локальный динамический профилировщик. Если вы уже создали неправильный, вы можете изменить его в нижней части диалогового окна Attach Profiler. Теперь выберите текущий процесс и что он.
Ответ 2
У меня была такая же проблема с использованием NetBeans 8.0.2 для профилирования теста junit в многомодульном проекте maven.
Я работал над этим, извлекая тест в автономный проект maven и добавляя другие модули в качестве зависимостей.
Причина, по которой он не работает в многомодульном проекте, заключается в том, что при нажатии Файл теста профиля NetBeans генерирует неправильную командную строку.
Например. в многомодульном проекте он производит:
cd C:\test; "JAVA_HOME=C:\\Program Files\\Java\\jdk1.8.0_40" cmd /c "\"\"C:\\Program Files\\NetBeans 8.0.2\\java\\maven\\bin\\mvn.bat\" -Dtest=PerfTest -DforkMode=once -Dmaven.surefire.debug=${exec.args} -Dexec.args= -Dmaven.ext.class.path=\"C:\\Program Files\\NetBeans 8.0.2\\java\\maven-nblib\\netbeans-eventspy.jar\" -Dfile.encoding=UTF-8 surefire:test\""
тогда как это должно быть:
cd C:\test; "JAVA_HOME=C:\\Program Files\\Java\\jdk1.8.0_40" cmd /c "\"\"C:\\Program Files\\NetBeans 8.0.2\\java\\maven\\bin\\mvn.bat\" -Dtest=PerfTest -DforkMode=once -Dmaven.surefire.debug=${exec.args} -Dexec.args=\"-agentpath:\\\"C:/Program Files/NetBeans 8.0.2/profiler/lib/deployed/jdk16/windows-amd64/profilerinterface.dll\\\"=\\\"C:\\Program Files\\NetBeans 8.0.2\\profiler\\lib\\\",5140,10 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=C:\\Users\\foo\\AppData\\Local\\NetBeans\\Cache\\8.0.2\\mavencachedirs\\2029222463\\org-netbeans-modules-profiler \" -Dmaven.ext.class.path=\"C:\\Program Files\\NetBeans 8.0.2\\java\\maven-nblib\\netbeans-eventspy.jar\" -Dfile.encoding=UTF-8 surefire:test\""
TL; DR - аргумент -Dexec.args = пуст в многомодульном проекте.