java底层代码使用C写的吗
答案:2 悬赏:20 手机版
解决时间 2021-03-10 05:45
- 提问者网友:听门外雪花风
- 2021-03-09 22:52
java底层代码使用C写的吗
最佳答案
- 五星知识达人网友:纵马山川剑自提
- 2021-03-09 23:28
java虚拟机根据各个平台进行编写,肯定会用到C,但是不一定完全用C写的
全部回答
- 1楼网友:轮獄道
- 2021-03-10 00:56
如果你是windows xp的话直接在想调试的c代码前加 __asm int 0x3; 就好了,到时候,先运行java,等执行到native的时候,它会跳出一个异常,然后你选用vc进行调试就好了,最后在那个dll一起配上你的ilk和pdb文件,这样符号都会在调试时加载,但操作不好的话,你调试的时候会全是汇编而不是显示代码...
如果你是windows vista或更高版本,最好使用__debugbreak(); 函数,然后在vs里的工具菜单下选项里找到调试,里面有实时,把本机勾上,然后再运行java程序,运行到native的时候,它会弹出异常,等那个窗口稳定,然后点调试,就进vs里调试了。。。
比如我调试printf:
// c
void main(jenv* xxxx) {
__debugbreak();
printf("hello world!\n");
}
// java
public void native main(xxxxx);
main(....);
则加上__debugbreak后编译,然后执行java程序,到main以后,系统会跳出异常,然后点调试进入vs就ok!
附加:
你的dll不是自己写的吗?要在想调试的函数最开头加__debugbreak(); 然后编译成新的dll,不要动dll的位置(这样在vs调试本地代码时可以显示dll的源代码而不是汇编代码),用jni直接全路径加载你的dll
然后在java代码中调用本地代码,最好用debug模式单步运行
运行到本地代码,它会出现程序崩溃的框,等待一会它会问你关闭程序还是调试,这时点调试(要在vs中工具菜单下选项里设置,前面说过了)会打开vs,这时就可以在vs里单步调试本地代码了...
vs里一般怎么调试代码就怎么用,和一般的调试一样的操作....
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯