爲什麼Kernel#p打印標準輸出?是不是printf debugging應該輸出到標準錯誤?爲什麼Kernel#p打印標準輸出?
回答
你爲什麼假設Kernel#p用於調試?
$stderr.puts(x.inspect)
順便說一句,如果你真的想用printf調試I:如果你想寫入標準錯誤,你可以做到這一點寫入stdout就像C.
內核#print或printf建議您閱讀這個article about debugging techniques
難道你不是指'$ stderr.puts(x.inspect)'? – 2010-02-12 08:51:31
如果你想要Kernel#p的行爲,是的。 – 2010-02-12 08:55:25
您可以定義一個全局函數「q」,除了打印到$ stderr之外,其功能與「p」相似。
#!/usr/bin/ruby1.8
module Kernel
def q(*stuff)
stuff.each { |thing| $stderr.print(thing.inspect + "\n")}
end
end
q 'foo' # => "foo"
你可能會被使用puts
而不是print ... + "\n"
。此代碼使用print
使其線程安全:puts
可以在打印其參數和打印新行的時間之間中斷,導致兩個線程的輸出顯示在一行上。很少有多線程代碼同時寫入$ stdout/$ stderr,所以通常不是問題。但是這是一個調試工具,你最終會用它來找出線程中發生了什麼。
- 1. 爲什麼不打印到標準輸出(stdout)?
- 2. Unicode,打印到標準輸出,發生了什麼?
- 3. 爲什麼打印輸出不爲空?
- 4. MySQL查詢打印爲CSV輸出到標準輸出
- 5. epoll_wait()塊打印到標準輸出
- 6. Qt標準輸出。 cout不打印
- 7. Objective C打印標準輸出到UIAlertView
- 8. 打印文件名到標準輸出
- 9. 打印到標準輸出使用AppleScript
- 10. Haskell打印字符串標準輸出
- 11. 使用HiveQL打印到標準輸出
- 12. Django停止打印到標準輸出
- 13. 打印到標準輸出在sml
- 14. Subprocess.communicate打印換行到標準輸出
- 15. subprocess.check_output仍然打印在標準輸出
- 16. 爲什麼輸出打印兩次?
- 17. 爲什麼我打印3次輸出?
- 18. 爲什麼輸出打印JdbcOdbcConnection
- 19. 爲什麼C打印輸出較遲?
- 20. 爲什麼輸出不打印列表?
- 21. 爲什麼此日誌記錄配置不會打印到標準輸出?
- 22. 打開文件,打印到標準輸出,追加到文件,並再次打印到標準輸出
- 23. Python traceback.print_exc()打印到標準輸出或標準錯誤嗎?
- 24. 爲什麼打印出spospo?
- 25. 保存命令輸出沒有它打印到標準輸出
- 26. 輸出不打印沒有fflush(標準輸出)
- 27. 如何在Linux(GCC)中打印輸出(不是標準輸出)?
- 28. 抑制打印爲標準輸出蟒蛇
- 29. 爲什麼找不到腳本輸出到標準輸出?
- 30. 從標準輸入讀取和打印到紅寶石標準輸出
它不會被稱爲「printf調試」,那麼,它會嗎? printf()打印到標準輸出。 – Ken 2010-02-12 07:32:44