Я использую 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