ако предпочитате c++ вместо c, можете да използвате рамката engextcpp, предоставена с windbg sdk
примерен код, който предоставя dml връзка с възможност за щракване, която при щракване ще отпечата стека за извикване в текущия указател на инструкция
съдържанието на директорията преди компилирането
D:\barebones>ls
barebones.cpp barebones.def
програмен код
D:\barebones>cat barebones.cpp
#include <engextcpp.cpp>
#pragma comment (lib ,"dbgeng.lib")
class EXT_CLASS : public ExtExtension
{
public:
EXT_COMMAND_METHOD(barebones);
};
EXT_DECLARE_GLOBALS();
EXT_COMMAND(barebones,"","")
{
DmlCmdExec( "CallStack\n","kb");
}
съдържанието на def файла
D:\barebones>cat barebones.def
EXPORTS
DebugExtensionInitialize
DebugExtensionUninitialize
DebugExtensionNotify
barebones
init срещу devcmd подкана
D:\barebones>runvs
D:\barebones>pushd .
D:\barebones>cd /d "c:\Program Files\Microsoft Visual Studio\2017\Community\Common7\Tools\"
c:\Program Files\Microsoft Visual Studio\2017\Community\Common7\Tools>vsdevcmd.bat
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.9.4
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
c:\Program Files\Microsoft Visual Studio\2017\Community\Common7\Tools>popd
съдържанието на компилиране и свързване на публикации в директории
D:\barebones>cl /Zi /W3 /EHsc /Od /LD /nologo /I e:\windjs\windbg_18362\inc barebones.cpp /link /release /def:barebones.def /nologo
barebones.cpp
Creating library barebones.lib and object barebones.exp
D:\barebones>ls -lg
total 7684
-rw-rw-rw- 1 0 247 2019-10-03 16:46 barebones.cpp
-rw-rw-rw- 1 0 96 2019-10-03 16:09 barebones.def
-rw-rw-rw- 1 0 373248 2019-10-03 16:54 barebones.dll
-rw-rw-rw- 1 0 1198 2019-10-03 16:54 barebones.exp
-rw-rw-rw- 1 0 2520 2019-10-03 16:54 barebones.lib
-rw-rw-rw- 1 0 460094 2019-10-03 16:54 barebones.obj
-rw-rw-rw- 1 0 6500352 2019-10-03 16:54 barebones.pdb
-rw-rw-rw- 1 0 512000 2019-10-03 16:54 vc140.pdb
D:\barebones>
използване
.load {path to barebones.dll}
type !barbones and hit enter
click the link Named CallStack to get a stacktrace
![въведете описание на изображението тук](https://i.stack.imgur.com/MX83V.gif)
person
blabb
schedule
03.10.2019
dbgeng
тогава трябва даset a breakpoint
и след товаexamine the stack
трасиране. - person Neitsa   schedule 30.09.2019~
,k
иr
, за да видите дали това е, което искате. - person Thomas Weller   schedule 30.09.2019