In VB .NET, I know I can get a stack trace by looking at the value of ex.StackTrace
when handling an exception. How can I get the functions on the stack when I am not handling an exception? I am looking to implement a logging system of some sort to record the steps the user takes prior to a crash to assist in debugging.
We can obtain a stack trace from a thread by calling the getStackTrace() method on the Thread instance. It returns an array of StackTraceElement, from which details about stack frames of the thread can be found.
To open the Call Stack window in Visual Studio, from the Debug menu, choose Windows>Call Stack. To set the local context to a particular row in the stack trace display, select and hold (or double click) the first column of the row.
Each thread has its own call stack, representing the calls made in that thread. To get a stack trace, use the methods GetStackTrace and GetContextStackTrace. A stack trace can be printed using OutputStackTrace and OutputContextStackTrace.
Using printStackTrace() method − It print the name of the exception, description and complete stack trace including the line where exception occurred. Using toString() method − It prints the name and description of the exception. Using getMessage() method − Mostly used. It prints the description of the exception.
Environment.StackTrace
Environment.StackTrace
gives you a string, but for more detailed information and options, use the StackTrace
class.
To be more specific, check out the constructor options:
http://msdn.microsoft.com/en-us/library/system.diagnostics.stacktrace.stacktrace.aspx
If you need the stack trace starting at the caller's frame (e.g. in a logging function: you don't want everything to start with MyLogMethod
), you should try this one, which takes an int
parameter, the number of frames to skip.
http://msdn.microsoft.com/en-us/library/wybch8k4.aspx
If you need the stack trace without source information (e.g. if you don't want to give away information about your source code), try this one:
http://msdn.microsoft.com/en-us/library/6zh7csxz.aspx
Hope that helps!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With