我有應用程序的發行版本(需要一些批處理文件才能安裝和運行)。我有一個與我的源代碼副本。爲了查看每個事件的路徑(瞭解程序),我現在正在做的是安裝應用程序,同時構建我的源代碼,然後複製所有的dll和pdbs(以便調試器可以映射到我的代碼)從我的調試文件夾編程文件,然後運行應用程序。由於我在源代碼中放置了diagnostics.debugger.launch,因此我能夠調試我的版本。 我這樣做是因爲我無法直接從我的bin \ debug執行和測試項目,因爲它有一些依賴項(批處理文件參數),因此我正在安裝發行版本。我必須找出我的代碼中的每個事件路徑(因爲我對這家公司和.NET都是新手)。有沒有更簡單的方法(如intellitrace ...是否會幫助我的情況?)謝謝。在visual studio發行版應用程序中調試
0
A
回答
1
歡迎來到SO!更多的信息會有幫助。什麼是程序在做什麼,你想解決什麼問題,等等......
只要跟蹤執行路徑,有很多方法可以做你想做的事情。只需幾點建議:
- 記錄啓動輸入並使用相同的輸入在開發環境中調試程序。取決於其他外部依賴項可能無法工作。
- 將每個方法的條目記錄到文件中。這會讓你看到執行路徑。這對於實現老式的方式非常不利,但是您可以使用免費版本PostSharp中的OnMethodBoundaryAspect之類的代碼編寫一次記錄代碼,並根據給定方法的需要重用它。
- 使用諸如Gibraltar之類的儀器平臺來了解正在發生的事情。
- 使用Trace Listener跟蹤您的事件執行情況。看看Trace.Listeners.Add()。一旦你創建了一個監聽器,你可以調用Trace.Write或者Trace.WriteLine來爲這個跟蹤添加信息。這涉及到很多手動將跟蹤信息輸入到您的方法中,但如果您絕望,可以這樣做。我更喜歡像PostSharp這樣的面向方面的解決方案,但是無論出於何種原因,您可能都沒有這個選項。
快速樣品:(同樣,這種方法不推薦...)
using System.Diagnostics;
using System.IO;
namespace TrackingExecutionPath
{
internal class Program
{
private static void Main(string[] args)
{
var myFile = File.Create(@"C:\Application.log");
Trace.Listeners.Add(new TextWriterTraceListener(myFile));
Trace.WriteLine("Starting up");
var tracer = new Tracer();
tracer.TraceMeOnce();
Trace.WriteLine("Wrapping up");
Trace.Flush();
}
}
internal class Tracer
{
public void TraceMeAgain()
{
Trace.IndentLevel++;
Trace.WriteLine("Entering TraceMeAgain");
Trace.WriteLine("Doing some work.");
Trace.WriteLine("Exiting TraceMeAgain");
Trace.IndentLevel--;
}
public void TraceMeOnce()
{
Trace.IndentLevel++;
Trace.WriteLine("Entering TraceMeOnce");
Trace.WriteLine("Doing some work.");
TraceMeAgain();
Trace.WriteLine("Exiting TraceMeOnce");
Trace.IndentLevel--;
}
}
}
輸出示例:
啓動了
進入 TraceMeOnce
做 一些 工作。
進入 TraceMeAgain
做 一些 工作。
退出 TraceMeAgain
退出 TraceMeOnce
結束語 了
+0
感謝您的接受。我很想知道更多關於你的問題和你所採取的方法。讓我們知道你是否有時間。 –
相關問題
- 1. Visual Studio調試應用程序如eclipse
- 2. Visual Studio在應用程序啓動時進行遠程調試
- 3. 在發佈模式下調試Visual Studio Web應用程序
- 4. 使用visual studio多線程應用程序進行調試
- 5. 在Visual Studio外運行的調試應用程序
- 6. 如何在Visual Studio中調試庫的發行版本
- 7. 您正在MS Visual Studio中調試xyz.dll的發行版本?
- 8. 在Visual Studio中調試MapReduce程序
- 9. 在Visual Studio中調用C#命令行應用程序的調試會話
- 10. 使用visual studio在php應用程序中調試javascript
- 11. 在經典ASP調試中禁用Visual Studio 2012中的應用程序調試
- 12. 未在Visual Studio中調試時,應用程序掛起
- 13. 在Visual Studio 2010中調試Web應用程序令人討厭
- 14. 在Visual Studio中調試Azure應用程序
- 15. 在Visual Studio中調試Angular2應用程序代碼
- 16. 在Visual Studio 2008中調試Web應用程序
- 17. 在Visual Studio中調試WebApi不會返回MVC應用程序
- 18. OCCI C++應用程序的Visual Studio調試運行時錯誤
- 19. Visual Studio 2017,無法調試或運行應用程序
- 20. 無法在Visual Studio調試應用程序在2010年後安裝Visual Studio 2013
- 21. Android Studio:運行/調試版本的應用程序
- 22. Visual Studio在遠程調試Cordova iOS應用程序時掛起
- 23. 如何禁用F12調試Visual Studio 2012中的應用程序
- 24. 使用Visual Studio中的子域調試mvc web應用程序?
- 25. XamlParseException在使用Visual Studio 2015調試WPF應用程序時
- 26. WPF應用程序調試 - visual studio退出調試,運行.exe很好
- 27. 使用Visual Studio 6.0從XP遠程調試NT應用程序
- 28. 如何在Visual Studio代碼中運行調試Django應用程序?
- 29. 如何從Visual Studio調試器中釋放應用程序?
- 30. 在Visual Studio 2010中調試由C++程序調用的Fortran dll
歡迎SO!你能澄清你的意思嗎?找出每一個執行路徑?這是你給的任務嗎?或者你是否正在這樣做以更熟悉該軟件?您是否想要確定應用程序的[圈複雜度](http://en.wikipedia.org/wiki/Cyclomatic_complexity)? – Derek
與團隊成員交談時,他們已經知道如何調試應用程序。我們沒有。不要害羞地向你的團隊成員尋求幫助,他們*希望*儘快加快速度。要求他們的幫助並不會使你聽起來不夠健全,這使你聽起來渴望學習,併成爲團隊的有效成員。這是好事。 –