2015-11-08 72 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