回答
我相信你的意思是CS-Script(如果不是,請糾正我)。我不知道你是怎麼稱呼它的,但我確實發現this command line documentation(似乎他們的幫助文件中的位置沒有反映在他們的URL中,你需要導航到Overview -> Command-line interface
)。使用.net時,如果您有相應的.pdb
文件,則行號包含在堆棧跟蹤中,如果在編譯時沒有進行優化,行號也將是正確的(這對CS-Script來說不應該是一個問題) 。在cscs.exe
的文檔中有一個開關/dbg or /d
。如果包含此開關,則相應的.pdb
文件將包含在您的.exe
(或包含.dll的文件(如果構建庫文件)中)。一旦你有兩個文件行號,現在可以在任何給定異常的堆棧跟蹤中找到該程序集中的操作。
/DBG或/ d
強制編譯器包括調試信息。
假設我們有一個用一些測試代碼調用Test.cs
文件:
cscs.exe /e /dbg Test.cs
這將輸出2個文件:
- 將Test.exe
- Test.pdb
這裏是0的示例內容,當你執行它時,你會看到行號。
using System;
namespace MyProgram
{
class Program
{
static void Main(string[] args)
{
try
{
throw new Exception("OH NO");
}
catch (Exception ex)
{
Console.WriteLine(ex.StackTrace);
}
Console.ReadLine();
}
}
}
執行內聯
這也有可能需要在EvaluatorConfig
部分設置爲true DebugBuild
標誌。在我的下面的例子中,當使用LoadCode
時,你會得到一切預期的BUt,它使用一個臨時文件名,所以文件名看起來很有趣,儘管行號是正確的。還有LoadXXX命令用於加載一個或多個文件,因爲文件名稱現在已知,所以這將提供更漂亮的堆棧跟蹤。
class Program
{
static void Main(string[] args)
{
CSScript.EvaluatorConfig.DebugBuild = true;
CSScript.EvaluatorConfig.Engine = EvaluatorEngine.CodeDom;
Console.WriteLine("Debug on = " + CSScript.Evaluator.DebugBuild);
dynamic script = CSScript.Evaluator
.LoadCode(@"using System;
public class Script
{
public int Sum(int a, int b)
{
try{
throw new Exception();}
catch(Exception ex){
Console.WriteLine(ex.StackTrace);
}
return a+b;
}
}");
int result = script.Sum(1, 2);
Console.WriteLine(result);
Console.ReadLine();
}
}
我沒有測試過這一切,以確保它的工作。如果您遇到問題,請告訴我。
我假設他們沒有編譯C#,而是將其作爲腳本在應用程序中使用腳本庫運行。除非啓用調試的CSScript對象上有方法,否則動態發射的程序集不太可能擁有行號(正如您所說,該功能是基於pdb的)。 – Zastai
@ Zastai - 我沒想過,謝謝!我更新了我的答案,有一個標誌來啓用它(現在用上面的代碼對它進行測試),並且似乎可行。無論採取哪種方式,您都可以創建一個.net程序集(可以是臨時的),因此創建.pdb的機會也應該在那裏(只要這個API支持)。 – Igor
我們在我們的應用中運行它。這看起來不錯,給予賞金。我錯過了有更好的調試設置的新版本,所以謝謝你。但是,我無法升級到最新的設置,並且由於很多錯誤而進行測試。 – Macke
- 1. 如何在執行csh腳本時顯示行號?
- 2. TestNG報告:stacktrace顯示出現故障的方法,但未顯示行號
- 3. 如何顯示每10行的行號?
- 4. 如何顯示XamDataGrid中的行號?
- 5. 如何在CLion IDE中顯示行號?
- 6. 如何在gridview中顯示行號
- 7. 如何在JSF表中顯示行號?
- 8. 如何在TStringGrid中顯示行號?
- 9. 如何在D backtraces中顯示行號?
- 10. 如何在JqGrid中顯示行號?
- 11. 如何在SWT中顯示行號表
- 12. 如何在Grid.Mvc中顯示行號?
- 13. 如何使用Stacktrace返回vb.net中的錯誤行號
- 14. 如何從StackTrace中獲取正確的行號?
- 15. 如何在第一行顯示句子(多行)的行號?
- 16. 在mysql中顯示行號
- 17. 在DataGrid中顯示行號
- 18. 如何在顯示ProgressBar時執行方法,然後在顯示Form後執行?
- 19. 如何顯示錯誤的行號碼
- 20. 如何刪除顯示行號的列
- 21. 顯示行號
- 22. 顯示行號
- 23. 顯示行號
- 24. 的Makefile:顯示和執行
- 25. 如何在二維數組中顯示行號和列號?
- 26. 如何顯示執行的命令行程序的輸出?
- 27. 如何在PHP中顯示MySQL查詢的執行時間?
- 28. 如何在vim中顯示包裝的相對行號
- 29. 如何在IntelliJ IDEA中顯示異常拋出的行號
- 30. 如何在AppCode的所有文件中顯示行號?
下面的答案是否可以幫助你?如果不是你還在遇到什麼? – Igor
對不起,我一直忙於其他項目。將盡快檢查答案。 – Macke