public void Trace(string message, params object[] args) { if (Level <= LogLevel.Trace) { _outputPane.WriteLine(TextColor.DebugLogTrace, string.Format(message, args)); } }
void TheDebugger_OnProcessStateChanged(object sender, DebuggerEventArgs e) { var dbg = (DnDebugger)sender; switch (dbg.ProcessState) { case DebuggerProcessState.Starting: if (outputLoggerSettings.ShowDebugOutputLog) { outputService.Select(GUID_OUTPUT_LOGGER_DEBUG); } debugState?.Dispose(); debugState = null; textPane.Clear(); dbg.DebugCallbackEvent += DnDebugger_DebugCallbackEvent; debugState = new DebugState(dbg); break; case DebuggerProcessState.Continuing: case DebuggerProcessState.Running: case DebuggerProcessState.Paused: Debug.Assert(debugState != null && debugState.dbg == dbg); break; case DebuggerProcessState.Terminated: Debug.Assert(debugState != null); Debug.Assert(debugState?.dbg == dbg); if (outputLoggerSettings.ShowProcessExitMessages) { int processExitCode; if (!NativeMethods.GetExitCodeProcess(debugState.hProcess_debuggee, out processExitCode)) { processExitCode = -1; } textPane.WriteLine(BoxedTextColor.DebugLogExitProcess, string.Format(dnSpy_Debugger_Resources.DebugLogExitProcess, GetProcessNameWithPID(debugState.debuggedProcess), processExitCode)); } debugState?.Dispose(); debugState = null; break; } }