1
我想在应用程序开始运行之前设置一个断点,这样我就可以确保应用程序在启动时不会传递断点。如何在执行前设置断点
为了设置你需要做的是这样一个断点:
EventRequestManager reqMan = vm.eventRequestManager();
BreakpointRequest bpReq = reqMan.createBreakpointRequest(locationForBreakpoint);
bpReq.enable();
为了获得断点的位置,你可以这样做:
Method method = location.method();
List<Location> locations = method.locationsOfLine(55);
Location locationForBreakpoint = locations.get(0);
为了得到一个方法,你可以这样做:
classType.concreteMethodByName(methodNname, String signature)
不过,为了得到那个classTyp您似乎需要一个似乎需要运行JVM的ObjectReference。
有没有什么办法在应用程序JVM运行之前设置断点,以确保在应用程序启动过程中不会传递断点?
听起来很有希望,但你能否详细说明,我没有看到从ClassPrepareRequest到断点的文档。 –
活动从哪里来? –
来自EventRequestManager。类准备的请求具有与其他任何请求相同的创建模式(如您的示例中的断点)。当准备好类时(例如从类加载器加载)一个ClassPrepareEvent被触发;拦截并创建断点请求 –