是否有gnatada爲c macros__LINE__
,__FILE__
,__func__
等效?這些在錯誤消息中很有用,可以快速找到代碼中的錯誤。也許還有另一個概念來歸檔相同的目標。c宏__LINE__,__FILE__,__func__相當於蚊蚋ADA
1
A
回答
4
我沒有手頭上的安裝檢查,但文件說,包GNAT.Source_Info「規定的子程序,讓訪問在編譯時已知源代碼的信息,如當前文件名和行號。「並且adacore有spec for the package(通過Christoph)
1
對不起,__LINE__
和__FILE__
和其他__THING__
是C預處理器的功能,這是ada沒有的東西。你可以陪陪一個簡單的Perl腳本(或類似的)來預先運行你的代碼,以模擬__LINE__
和__FILE__
,但是__func__
會更困難,因爲這意味着實際上解析代碼。
啊,原來它存在於GNAT中。例如:
with Ada.Text_IO
GNAT.Source_Info;
use Ada.Text_IO
GNAT.Source_Info;
procedure source_error is
-- example of GNAT.Source_Info.Source_Location
i : integer;
j : integer := 0;
begin
i := 5/j; -- division by zero
exception when others =>
put_line(standard_error
Source_Location & ": exception raised");
end source_error;
0
另一種方法是在異常情況下打印堆棧跟蹤。有一些GNAT綁定器參數用於啓用堆棧跟蹤存儲(-E?),然後您可以使用Ada.Exceptions包打印它們。還有一個包可以在任何時候或者發生異常情況下打印堆棧(我總是對所有任務都有最後一個處理程序處理程序)。請參閱http://rosettacode.org/wiki/Stack_traces#Ada
根據我的經驗,異常堆棧跟蹤非常適合查明問題。
相關問題
- 1. __FILE__,__LINE__在C++
- 2. Haskell相當於C的__LINE__
- 3. 的Java相當於__func__
- 4. bash中`__FILE__`,`__LINE__`的等效
- 5. 捕捉__LINE__和__FILE__沒有的#define
- 6. 已禁用__LINE__宏?
- 7. 的Visual C++ 10和小寫的__FILE__宏
- 8. 如何找到父函數的__FUNCTION__,__LINE__和__FILE__?
- 9. 在Ruby中,class_eval << - 「end_eval」,__FILE__,__LINE__是什麼意思?
- 10. 在代碼中引用__FILE__和__LINE__以引用?
- 11. 相當於C#
- 12. 函數名稱的預定義宏__func__
- 13. 是否有一個Java相當於如果__FILE__ == $ 0〜
- 14. 如何在C中標記和大小__func__宏?
- 15. __LINE__等效於Javascript
- 16. C/C++相當於C#System.Net.Mail
- 17. C#相當於InStrRev
- 18. C#ULONG_PTR相當於
- 19. C#相當於FREAD
- 20. C-pstree相當於
- 21. httplib相當於C
- 22. C++相當於tailq
- 23. C#相當於pydoc
- 24. strtoul相當於C#
- 25. C++相當於java.lang.Integer.MIN_VALUE
- 26. ungetc相當於c#
- 27. C#相當於fprintf
- 28. C++宏與__LINE__類似,但在給定行中找到位置?
- 29. 使用##和__LINE__創建C宏(與定位宏連接的令牌)
- 30. Ada讀取一個字符串(相當於scanf%s)
看到http://adacore.com/gap-static/GNAT_Book/html/rts/g-souinf__ads.htm的文檔 – Christoph 2014-09-11 13:30:50
代碼來獲得'文件:行,procedure': '與GNAT.Source_Info;' 'Put_Line(GNAT.Source_Info.Source_Location&「,」&NAT.Source_Info.Enclosing_Entity);' – StackUnderflow 2014-09-11 14:38:55
在答案中修復了Christoph的鏈接:https://www2.adacore.com/gap-static/GNAT_Book/html/rts /g-souinf__ads.htm – 2018-01-26 18:42:47