我目前正在使用 HP Fortify 工具扫描项目中的安全漏洞。在扫描 Fortify 的 CLI 时,允许构建工具集成到其 CLI 命令中,以便构建并同时扫描项目中存在的文件。我正在使用以下命令:
sourceanalyzer -b mcapbookvalue -gradle -verbose ./gradlew -x test --console=verbose -debug --continue assemble
但构建陷入困境:
2020-01-14T12:31:39.836-0500 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.[0K
2020-01-14T12:31:39.836-0500 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
2020-01-14T12:31:39.836-0500 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
2020-01-14T12:31:39.836-0500 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
2020-01-14T12:31:39.836-0500 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
Run Code Online (Sandbox Code Playgroud)
如果我在不使用 Fortify 的集成命令的情况下构建项目,则构建成功,仅使用:
./gradlew -x test --console=verbose -debug --continue …
是否可以在cygwin上安装任何版本的Sun JDK或Open JDK.
我正在寻找这个选项的原因是:有很多工具(例如jStack,jMap)可以在JDK的unix版本中使用,但不能用于windows版本.如果可能的话,我需要在我的Windows机器上使用Cygwin.
我正在考虑制作一个剧本
但我不知道在运行的JVM上有多昂贵或侵入性的jstack.在正在运行的JVM上执行jstack有多贵?我是否为一个受伤的世界做好准备?
是否有必要以root身份运行jstack -F(在linux上),如果是这样,为什么呢?
当尝试jstack -F我自己的进程时,我收到以下错误.
附加到进程的错误:sun.jvm.hotspot.debugger.DebuggerException:无法附加到进程
如果我用sudo运行它,jstack -F工作正常.
使用jstack我得到了一个运行的线程树.
以下是Thread.State的含义:
什么意思是tid和nid?
线程的标题就像
"事件批处理(Spring UAA/1.0.2)"守护程序prio = 10 tid = 0x0000000041e27800 nid = 0x363b等待条件[0x00007f9a89267000]
我打算在我的Java代码中使用线程优先级.应用程序应在我的Linux系统上运行:
>uname -a
Linux <host> 3.0.0-15-generic #26-Ubuntu SMP <date> x86_64 x86_64 x86_64 GNU/Linux
>java -version
java version "1.6.0_23"
OpenJDK Runtime Environment (IcedTea6 1.11pre) (6b23~pre11-0ubuntu1.11.10.1)
OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)
Run Code Online (Sandbox Code Playgroud)
在Web上阅读完之后,我现在使用以下命令启动我的测试应用程序:
sudo java -XX:+UseThreadPriorities -XX:ThreadPriorityPolicy=1 -jar ThreadPriorityTest.jar
Run Code Online (Sandbox Code Playgroud)
测试应用程序包含以下两个类:
package ch.mypackage;
public class CountingRunnable implements Runnable{
private long count=0;
private boolean goOn=true;
public long getCount() {
return count;
}
public void stop(){
goOn=false;
}
public void run() {
for(long iteration=0;goOn&&iteration<Long.MAX_VALUE;++iteration){
++count;
}
}
}
package ch.mypackage;
public class PriorizedCountingThreads …Run Code Online (Sandbox Code Playgroud) 我有一个运行作为Windows服务的Tomcat,并且已知这些不能与jstack一起运行.另一方面,jconsole运行良好,我可以看到各个线程的堆栈(我正在连接到"localhost:port"来访问它).
如何使用jconsole或类似工具将所有线程堆栈转储到文件中?(类似于jstack)
我真的很困惑:在我的Windows 2008r2中,我有一个Windows服务,实际上它是一个以SYSTEM用户身份运行的java进程.现在,我将Jstack原始用于该服务.但它发生错误:
insufficient memory or insufficient privilege to attach
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用Jstack的选项-F,它可以很好地工作.我查看了jdk的源代码,它使用了一个BugSpotAgent类来完成上面的操作.
我想知道我无法原始使用Jstack的根本原因,是SYSTEM用户权限问题吗?我也尝试使用PsExec.exe(一个工具)来原始运行我的Jstack(这意味着我将使用SYSTEM用户运行Jstack),但它仍然无法工作.
你能帮助我吗?
感谢和问候!
我试图在混合模式下在ubuntu上运行jstack:
$ jstack -m 7219
Run Code Online (Sandbox Code Playgroud)
结果是这个例外:
Attaching to process ID 7219, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.162-b12
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.tools.jstack.JStack.runJStackTool(JStack.java:140)
at sun.tools.jstack.JStack.main(JStack.java:106)
Caused by: java.lang.RuntimeException: Unable to deduce type of thread from address 0x00007f02cc002800 (expected type JavaThread, CompilerThread, ServiceThread, JvmtiAgentThread, or SurrogateLockerThread)
at sun.jvm.hotspot.runtime.Threads.createJavaThreadWrapper(Threads.java:166)
at sun.jvm.hotspot.runtime.Threads.first(Threads.java:150)
at sun.jvm.hotspot.tools.PStack.initJFrameCache(PStack.java:200)
at sun.jvm.hotspot.tools.PStack.run(PStack.java:71)
at sun.jvm.hotspot.tools.PStack.run(PStack.java:58)
at sun.jvm.hotspot.tools.PStack.run(PStack.java:53)
at sun.jvm.hotspot.tools.JStack.run(JStack.java:66)
at sun.jvm.hotspot.tools.Tool.startInternal(Tool.java:260)
at sun.jvm.hotspot.tools.Tool.start(Tool.java:223)
at …Run Code Online (Sandbox Code Playgroud) 我们在 Amazon Linux 上使用 Wildfly 11 和 Java 8。我们最近安装了jstack这个程序来解决 CPU 利用率高的问题,因为我们试图找出导致 CPU 旋转的代码。首先我们得到了Wildfly进程的PID...
[myuser@prodmachine ~]$ ps -elf | grep java
0 S jboss 1992 1 0 80 0 - 28275 - Aug30 ? 00:00:00 /bin/sh /usr/java/wildfly/bin/standalone.sh -c standalone.xml
0 S jboss 2044 1992 45 80 0 - 7336044 - Aug30 ? 5-13:38:33 /usr/java/default/bin/java -D[Standalone] -server -Xms64m -Xmx25600m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=1024m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman,com.newrelic -java.awt.headless=true -javaagent:/usr/java/wildfly/newrelic/newrelic.jar -Dorg.jboss.boot.log.file=/usr/java/wildfly/standalone/log/server.log -Dlogging.configuration=file:/usr/java/wildfly/standalone/configuration/logging.properties -jar /usr/java/wildfly/jboss-modules.jar -mp /usr/java/wildfly/modules org.jboss.as.standalone -Djboss.home.dir=/usr/java/wildfly -Djboss.server.base.dir=/usr/java/wildfly/standalone -c standalone.xml
0 S 602 3630 …Run Code Online (Sandbox Code Playgroud)