2015-11-08 70 views
0

我想通过使用eclipse调试它来了解hadoop源代码。 而我调试它,我遇到)命名START0(本机的功能在这里:使用它蚀“或使用任何外部工具”,或者至少我可以读此功能的源代码
http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b27/java/lang/Thread.java#Thread.start0%28%29如何在hadoop源代码中调试本机函数?

我可以调试?
Hadoop是一个开源的,所以它应该可以访问和读取其中所有函数的代码,但我不知道如何。

Note: my hadoop version : 1.2.1 

编辑: 我读到的原始功能和从我读,包含本地函数的类应该包含这样的事情:

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

但在Hadoop中的线程类包含此:
/* Make sure registerNatives is the first thing <clinit> does. */ 134 private static native void More ...registerNatives(); 135 static { 136 registerNatives(); 137 }

那么我怎样才能知道库的名称start0 ()函数链接到?

回答

0

我终于明白,start0()函数是从java代码中的一部分不是hadoop代码的一部分,所以它只是做/创建一个新的线程来运行它的工作对于hadoop开发,我们只需要知道:
Thread.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

0

您可以随时获取源代码。示例配置文件,为您的版本是here

+0

其中,是函数START0()在配置文件中的源代码? – Flowra

+0

给定的链接通常用于Hadoop相关的源代码。上面提到的一点是Thread.start(),它通常会为新进程调用。所以你不会在config中找到start() – Ramzy