2009-10-11 26 views
1

ScrumJet on GitHub(撰寫本文時)的實現在任務,類別和板卡的存儲模塊之間共享基本相同的功能。這是通過將大量使用宏的相同代碼移動到scrumjet_datastore.hrl來實現的。 scrumjet_task.erl,scrumjet_category.erlscrumjet_board.erl中的每一個都包括scrumjet_datastore.hrl並且沒有本地定義的功能。如何在Erlang中調試包含的函數?

當沒有任何錯誤時,這很有效。但是,如果我需要調試,那麼調試器會調出空模塊,而不是定義函數的頭文件。

有誰知道如何使Erlang調試器在包含函數中工作?

+1

最簡單的方法是將代碼從頭文件複製粘貼到模塊源文件並重新編譯。 – Zed 2009-10-11 14:55:07

+2

在我看來,scrumjet_datastore應該是一個erlang模塊,每個函數都將表名稱作爲附加參數。除了調用這些「空」模塊外,還可以調用scrumjet_datastore並傳遞表名稱... – Zed 2009-10-11 15:04:30

+2

我同意Zed,除非您知道需要和.hrl文件和宏的特定原因,正常模塊和參數儘可能多。這簡化了很多。不要擔心性能或內聯。 – 2009-10-11 17:17:02

回答

0

使用包含在Erlang中來共享函數的實現通常不是一個好主意。它有一些用途,但應該在常規應用程序代碼中避免它。

正如我在2009年提到的那樣,我遵循了Zed和Adam Lindberg的建議,並使用帶有參數化方法的數據存儲模塊。