什么是调试多进程Java应用程序的好系统,尚不清楚应该调试哪个进程?
例如,在Python中,我可以使用rpdb并添加行Sub Tester()
'in your VBProject, add a reference to:
' "Microsoft XML v6.0"
Dim steps As Object, step As Object, i As Long
Dim oXMLDoc As New MSXML2.DOMDocument60, xmlData
'XML needs a root element
xmlData = "<?xml version=""1.0""?><data>" & ActiveSheet.Range("A5").Value & "</data>"
oXMLDoc.LoadXML xmlData
oXMLDoc.setProperty "SelectionLanguage", "XPath"
Set steps = oXMLDoc.SelectNodes("//data/Step")
For Each step In steps
i = i + 1
Debug.Print "****** Step" & i
Debug.Print "Description", step.SelectSingleNode("Description").nodeTypedValue
Debug.Print "Validation", step.SelectSingleNode("Validation").nodeTypedValue
Next step
End Sub
,因此执行将一直阻塞,直到我通过如下方式连接到调试器为止: import rpdb; rpdb.set_trace()
。
与上述快速可靠的方法相比,当我使用Java调试器时,遇到了以下挑战:
确保每个进程都使用适当的参数运行以进行调试-在我的情况下,不清楚是什么启动了所有进程,因此不清楚在哪里更改参数。有没有办法更改计算机上的默认设置,使其始终包括jvm选项nc 127.0.0.1 4444
?
在命中所需的代码之前确定将调试器连接到哪个进程-再次,不清楚我应该连接哪个进程,-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=1044
阻塞直到调试器很方便连接,您无需识别进程ID。 Java中有与此类似的东西吗?
答案 0 :(得分:0)
使用类似以下内容启动Java:
java -agentlib:transport=dt_socket,server=y,suspend=y,address=1044
suspend=y
位告诉VM在运行main()之前要等待调试器连接。 address
是要连接的端口。