0
因此,在啓動一個新項目或調試現有項目時,我使用了大量的跟蹤代碼/日誌記錄。我想知道你用什麼技術來管理它,因爲我總是在做一個提交之前最終刪除它,然後必須重寫它,如果有其他事情出錯的話。在ruby中管理跟蹤代碼
我正在考慮開發一個帶有所有跟蹤代碼的分支,並且主控將是乾淨的,但它似乎很難篩選什麼是調試代碼,以及應該合併的內容。
有什麼建議嗎?
因此,在啓動一個新項目或調試現有項目時,我使用了大量的跟蹤代碼/日誌記錄。我想知道你用什麼技術來管理它,因爲我總是在做一個提交之前最終刪除它,然後必須重寫它,如果有其他事情出錯的話。在ruby中管理跟蹤代碼
我正在考慮開發一個帶有所有跟蹤代碼的分支,並且主控將是乾淨的,但它似乎很難篩選什麼是調試代碼,以及應該合併的內容。
有什麼建議嗎?
如何
def debug_only
if $DEBUG
yield
end
end
...
debug_only { puts "Some tracing code." }
在命令行上傳遞-d
會讓$DEBUG
真。
% ruby -e 'p $DEBUG'
false
% ruby -de 'p $DEBUG'
true
在這種情況下,有一種可能性是將跟蹤代碼與正在跟蹤的代碼分開。
對於eacample:
release.rb:
class A
def stuff(a, b)
# do stuff ...
end
end
debug.rb:
require 'release'
class A
alias release_stuff stuff
def stuff(a, b)
puts "calling stuff with (#{a.inspect}, #{b.inspect})"
rv = release_stuff(a,b)
puts "Done calling stuff."
rv
end
end
這具有這樣的粒度問題是一個方法,然後再它會鼓勵你編寫更小的方法。當然,你可以用一些「元編程」來減少冗長。
您還可以使用instance_method,bind和define_method使舊方法的副本成爲匿名。
然後使用它像
ruby -d -rdebug program.rb
事實上,我現在已經在使用一些非常相似:)`DEF詳細($詳細= TRUE;產量;確保$ verbose = false end`並且我有一個只在$ verbose爲true時才輸出的log()函數。但是我的問題在於實際的跟蹤代碼,它確實是一團糟,我只是不希望它在生產代碼中存在,我希望我的代碼沒有任何特定於調試的絨毛。 – cloudhead 2009-07-06 04:45:53