2016-02-13 54 views
1

是否有一種方法可以在運行時獲取Elixir中模塊的字節碼。在Elixir運行時獲取字節碼

我能夠將使用iex創建的模塊的字節碼保存到變量中,但我真正想要做的是獲取已加載模塊的字節碼。

我看了模塊&代碼功能,但沒有找到我需要的東西。有人能指出我正確的方向嗎?

這工作

:code.get_object_code(Map) 

但是,當我試圖讓一個模塊我寫它說字節碼 「:錯誤」

defmodule Hello do 
    def sayHello do 
     IO.puts "hello" 
    end 
end 

Hello.sayHello 

#輸出顯示模塊被加載

hello 
:ok 

#嘗試一下我寫的模塊。

:code.get_object_code(Hello) 

#輸出

:error 
+0

如果您發現任何解決方案感興趣的答案! – niahoo

回答

1

您可以使用函數從Erlang的:code模塊,即:code.get_object_code/1

iex(3)> :code.get_object_code(:elixir) 
{:elixir, 
<<70, 79, 82, 49, 0, 0, 52, 64, 66, 69, ...>>, 
'/usr/local/lib/elixir/bin/../lib/elixir/ebin/elixir.beam'} 
+0

謝謝,這適用於Elixir模塊,我更新了我的問題,以便更清楚。當我在iex中編寫的模塊上嘗試時發生錯誤。 – inic

+0

我發現這對我編寫的模塊有效,如果我在iex中手動輸入模塊,它只會不起作用。如果我在iex中手動輸入它們,我可以通過使用v命令來完成輸出。 – inic