java hotspot gdb调试时如何正确设置断点?

weixin_38141078 2015-05-29 05:21:24
终端中查询打开文件数是1024,如下所示: $ ulimit -n 1024 通过Java 代码(Runtime.getRuntime().exec(cmdArray))执行同样的命令发现是4096, 显然jvm隐式改变了该值, 搜索Openjdk hotspot源码,发现很有可能在os_linux.cpp中对打开文件数做了改变,相应源码为: 4616 if (MaxFDLimit) { 4617 // set the number of file descriptors to max. print out error 4618 // if getrlimit/setrlimit fails but continue regardless. 4619 struct rlimit nbr_files; 4620 int status = getrlimit(RLIMIT_NOFILE, &nbr_files); 4621 if (status != 0) { 4622 if (PrintMiscellaneous && (Verbose || WizardMode)) 4623 perror("os::init_2 getrlimit failed"); 4624 } else { 4625 nbr_files.rlim_cur = nbr_files.rlim_max; 4626 status = setrlimit(RLIMIT_NOFILE, &nbr_files); 4627 if (status != 0) { 4628 if (PrintMiscellaneous && (Verbose || WizardMode)) 4629 perror("os::init_2 setrlimit failed"); 4630 } 4631 } 4632 } 现在想在此处加上断点, 看运行java程序时, jvm是否进入此处。于是想到用GDB调试, $ sh hotspot -gdb HelloWorld ... (gdb) break os_linux.cpp:4619 No source file named os_linux.cpp. Make breakpoint pending on future shared library load? (y or [n]) n (gdb) continue Continuing. [New Thread 0x7ffff471d700 (LWP 24138)] [New Thread 0x7ffff461c700 (LWP 24139)] [New Thread 0x7ffff451b700 (LWP 24140)] [New Thread 0x7ffff441a700 (LWP 24141)] [New Thread 0x7fffd7afa700 (LWP 24142)] [New Thread 0x7fffd79f9700 (LWP 24143)] [New Thread 0x7fffd78f8700 (LWP 24144)] [New Thread 0x7fffd700f700 (LWP 24145)] [New Thread 0x7fffd6f0e700 (LWP 24146)] [New Thread 0x7fffd6e0d700 (LWP 24147)] [New Thread 0x7fffd6d0c700 (LWP 24148)] [New Thread 0x7fffd6c0b700 (LWP 24149)] Hello World! [Thread 0x7fffd6c0b700 (LWP 24149) exited] [Thread 0x7fffd700f700 (LWP 24145) exited] [Thread 0x7fffd7afa700 (LWP 24142) exited] [Thread 0x7ffff7fd8700 (LWP 23803) exited] [Thread 0x7ffff451b700 (LWP 24140) exited] [Thread 0x7fffd6e0d700 (LWP 24147) exited] [Thread 0x7fffd6f0e700 (LWP 24146) exited] [Thread 0x7fffd78f8700 (LWP 24144) exited] [Thread 0x7fffd79f9700 (LWP 24143) exited] [Thread 0x7ffff441a700 (LWP 24141) exited] [Thread 0x7ffff461c700 (LWP 24139) exited] [Thread 0x7ffff471d700 (LWP 24138) exited] [Thread 0x7ffff7fd9740 (LWP 23790) exited] [Inferior 1 (process 23790) exited normally] 但是并没有进入该断点, 通过搜索源代码发现没有其他地方更改打开文件数了, 所以是我设置断点方式不对吗?
...全文
17 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

435

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧