java.class.path_System.getProperty("java.class.path")是在什么时候被设置的?

这个属性确实设置的比较隐(坑)蔽(爹),我通过lldb定位到了它是在哪被加入SystemProperty的。我debug的是OpenJDK 9的源码,事先说明:我是使用:

lldb -- ./java -cp MainClass

这里,java.class.path属性值被加入到了系统属性链表。详情参考:

(lldb) b arguments.cpp:3248

Breakpoint 12: where = libjvm.dylib`Arguments::parse_each_vm_init_arg(JavaVMInitArgs const*, bool*, Flag::Flags) + 8230 at arguments.cpp:3248, address = 0x000000010229b816

(lldb) r

There is a running process, kill it and restart?: [Y/n] y

Process 17116 exited with status = 9 (0x00000009)

Process 17161 launched: './java' (x86_64)

Process 17161 stopped

* thread #6, stop reason = breakpoint 12.1

frame #0: 0x000000010229b816 libjvm.dylib`Arguments::parse_each_vm_init_arg(args=0x00007000048b8da0, patch_mod_javabase=0x00007000048b883f, origin=COMMAND_LINE) at arguments.cpp:3248

3245 continue;

3246 }

3247

-> 3248 if (!add_property(tail)) {

3249 return JNI_ENOMEM;

3250 }

3251 // Out of the box management support

(lldb) p tail

(const char *) $69 = 0x00000001004060c2 "java.class.path=/Users/etin/IdeaProjects/JDKPlayer/out/production/JDKPlayer"

(lldb) bt

* thread #6, stop reason = breakpoint 12.1

* frame #0: 0x000000010229b816 libjvm.dylib`Arguments::parse_each_vm_init_arg(args=0x00007000048b8da0, patch_mod_javabase=0x00007000048b883f, origin=COMMAND_LINE) at arguments.cpp:3248

frame #1: 0x0000000102299754 libjvm.dylib`Arguments::parse_vm_init_args(java_tool_options_args=0x00007000048b8990, java_options_args=0x00007000048b8958, cmd_line_args=0x00007000048b8da0) at arguments.cpp:2719

frame #2: 0x000000010229f94a libjvm.dylib`Arguments::parse(initial_cmd_args=0x00007000048b8da0) at arguments.cpp:4406

frame #3: 0x0000000102ed210a libjvm.dylib`Threads::create_vm(args=0x00007000048b8da0, canTryAgain=0x00007000048b8d0b) at thread.cpp:3538

frame #4: 0x000000010293c1ce libjvm.dylib`JNI_CreateJavaVM_inner(vm=0x00007000048b8e98, penv=0x00007000048b8e90, args=0x00007000048b8da0) at jni.cpp:3937

frame #5: 0x000000010293c0ac libjvm.dylib`::JNI_CreateJavaVM(vm=0x00007000048b8e98, penv=0x00007000048b8e90, args=0x00007000048b8da0) at jni.cpp:4032

frame #6: 0x0000000100005e40 java`InitializeJVM + 304

frame #7: 0x000000010000501c java`JavaMain + 172

frame #8: 0x00007fff9ed0d93b libsystem_pthread.dylib`_pthread_body + 180

frame #9: 0x00007fff9ed0d887 libsystem_pthread.dylib`_pthread_start + 286

frame #10: 0x00007fff9ed0d08d libsystem_pthread.dylib`thread_start + 13

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值