Czy istnieje sposób na uzyskanie stosu połączeń? powiedzmy, że mam funkcję, która jest wywoływana przez wiele innych funkcji, ale muszę wiedzieć, kto ją nazwał.Jak NSLog stos połączeń, gdy program jest uruchomiony?
Dzięki
Czy istnieje sposób na uzyskanie stosu połączeń? powiedzmy, że mam funkcję, która jest wywoływana przez wiele innych funkcji, ale muszę wiedzieć, kto ją nazwał.Jak NSLog stos połączeń, gdy program jest uruchomiony?
Dzięki
Oczywiście, że istnieje. Jeśli można użyć ramy kakao:
NSLog(@"%@", [NSThread callStackSymbols]);
Jeśli nie można go używać:
#include <execinfo.h>
int size = 256;
void *stack[size];
size = backtrace(stack, size);
char **syms = backtrace_symbols(stack, size);
for (int i = 0; i < size; i++) {
printf("Frame #%d: %s\n", i, syms[i]);
}
free(syms);
Jest to bardzo pomocne, dziękuję. – mskw