如何在hadoop源代码中调试本机函数?

kzmpq1sx  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(308)

我试图通过使用eclipse调试hadoop源代码来理解它。在调试时,我在这里遇到了一个名为start0()的本机函数:
http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b27/java/lang/thread.java#thread.start0%28%29
我可以使用eclipse“或者使用任何外部工具”来调试它,或者至少我可以阅读这个函数的源代码吗?
hadoop是一个开放源码,所以它认为我可以访问和读取其中所有函数的代码,但我不知道如何访问。

Note: my hadoop version : 1.2.1

编辑:我读过关于本机函数的内容,从我读到的内容来看,包含本机函数的类应该包含如下内容:

`// load DLL that contains static method
static {
System.loadLibrary("NativeDemo");
}`

但hadoop中的thread类包含以下内容: /* Make sure registerNatives is the first thing <clinit> does. */ 134 private static native void More ...registerNatives(); 135 static { 136 registerNatives(); 137 } 那么我怎么知道start0()函数链接到的库的名称呢?

lztngnrs

lztngnrs1#

我最终得到start0()函数是java代码的一部分,而不是hadoop代码的一部分,因此只需执行/创建一个新线程即可在其上运行作业,对于hadoop开发,我们只需要知道:
start0最终创建一个新的操作系统线程,并在该新线程中调用thread.run()。
创建新线程后调用的run函数如下:http://grepcode.com/file/repo1.maven.org/maven2/com.ning/metrics.collector/1.2.1/org/apache/hadoop/mapred/localjobrunner.java#localjobrunner.job.run%28%29

o0lyfsai

o0lyfsai2#

你总能得到源代码。示例配置文件,您的版本在这里

相关问题