Как получить граф вызовов funcs в других файлах c с StackWalker? - PullRequest
0 голосов
/ 16 февраля 2019

Я использую StackWalker ( StackWalker ) для генерации графа вызовов для кода c. Ниже приведены файлы кода под vs2015 win7 64bit.1.main.c

#include "fo.h"
#include "StackWalker_Wrapper.h"


void outputfunc(void)
{
    void *p = call_StackWalker_Create();
    call_StackWalker_ShowCallstack(p);
    call_StackWalker_Destroy(p);
    //assert(pStackWalker == 0);
}

int main(int argc, char *argv[])

{
    outputfunc();
    func3();
    return 0;
}

func3 находится в файле fo.c. Коды в приведенном выше файле main.c сгенерируют граф вызовов для вывода funcs и main, но не для графика func3 (func может быть неопределенным)Итак, как пересмотреть код, чтобы получить граф вызовов для таких функций, как func3?fo.c

#include "fo.h"
void func1(void)
{

}
void func2(void)
{
    func1();
}
void func3(void)
{
    func2();
}

Ниже приведена обёртка стека-обходчика для кода c.StackWalker_Wrapper.h

#ifndef _STACKWALKER_WRAPPER_H__
#define _STACKWALKER_WRAPPER_H_
#ifdef __cplusplus
extern "C" {
#endif    
#include <windows.h>    

void *call_StackWalker_Create();
void call_StackWalker_Destroy(void *);
BOOL call_StackWalker_ShowCallstack(void *); 

#ifdef __cplusplus
};
#endif
#endif
...