2009-08-27 39 views
10

Visual Studio ile C + + kullanarak, benim için arama desteğini basacak bir API olup olmadığını merak ediyordum. Tercihen, bir calltack 5 seviyesini derinden basmak istiyorum. Windows bunu yapmama izin verecek basit bir API sağlıyor mu?Yazdır n çağrıları seviyeleri?

cevap

5

Bunu yapmanın birkaç yolu var.

USHORT WINAPI CaptureStackBackTrace(
    __in  ULONG FramesToSkip, 
    __in  ULONG FramesToCapture, 
    __out  PVOID *BackTrace, 
    __out_opt PULONG BackTraceHash 
); 

Bu FramesToCapture parametre, geri maksimum arama yığın derinliğini belirler:

basit ve hem de en güvenilir yolu, Win32 API fonksiyonudur, Bence

How to Log Stack Frames with Windows x64 bakınız.

+0

Bu, herhangi bir sembolik bilgi üretmez. Hangi kullanım bir dizi işaretçi değeridir? –

+0

C/C++ Programlar hiçbir zaman varsayılan olarak sembolik bilgileri içermez. Yığın dökümüne sembol eklemenin yolları için buraya bakın: http://www.drdobbs.com/architecture-and-design/post-mortem-debugging-revisited/227900186 –

8

Microsoft'un DbgHelp kitaplığı sizin istediğinizi yapabileceği gibi görünüyor. Daha fazla bilgi için MSDN'de StackWalk64 işlevinin belgelerine bakın. Ayrıca, this CodeProject article yararlı olabilir.

0

DbgHelp API'sının Stackwalk ve Stackwalk64 API'sine bir göz atın.

1

Bunu hata ayıklayıcı API'sinden (dbghelp) alabilirsiniz.

İlgili konular