запись стека вызовов в Visual Studio - PullRequest
3 голосов
/ 14 октября 2009

Я пытаюсь отладить действительно большую программу на c ++ / c в Visual Studio. Изменение значения одного параметра резко меняет результат. Я хочу записать стеки вызовов для обоих запусков и развести их.

Кто-нибудь знает, как записать стек вызовов в файл в VS, не устанавливая точки останова и используя Select ALL / Copy в окне?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 14 октября 2009

Вы можете использовать System.Diagnostics.StackTrace, чтобы получить строковое представление текущего стека вызовов и записать его в файл. Например:

private static writeStack(string file)
{
    StackTrace trace = new StackTrace(true); // the "true" param here allows you to get the file name, etc.
    using (StreamWriter writer = new StreamWriter(file))
    {
    for (int i = 0; i < trace.FrameCount; i++)
        {
            StackFrame frame = trace.GetFrame(i);
            writer.WriteLine("{0}\t{1}\t{2}", frame.GetFileName(), frame.GetFileLineNumber(), frame.GetMethod());
        }
    }
}

Затем, когда вы хотите записать текущий стек, просто позвоните writeStack(somePath).

2 голосов
/ 14 октября 2009

Посмотрите на этот пример кода проекта , в котором используется StackWalk64 API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...