VS

2009-07-15 34 views
10

'da CreateProcess üzerinde kesme noktası ekleyebilirim Visual Studio'da Windows'ta CreateProcess API'sinde breakpoint ekleyebilir miyim Windbg'de yapabilir miyim?VS

cevap

15

Evet - git "fonksiyonuna ayıklama/Yeni kesme noktası/Break ..." ve bu yapıştırın: Function kutuya

{,,kernel32.dll}[email protected] 

.

Bu, bir Unicode yapısını varsayar - ANSI yapıları için 'u A ile değiştirin.

Biraz açıklama: @40 parçası stdcall çağrı kuralının bir parçasıdır ve işlevin aldığı parametrelerin bayt sayısını verir. Win32'de, bu neredeyse her zaman parametre sayısının 4 katıdır. Alt çizgi ayrıca stdcall çağrı sözleşmesinin bir parçasıdır.

İlgili bir not: bazen hata ayıklayıcı tarafından görüldüğü gibi işlevinin adı onun gerçek adı farklı olan - bir örnek için bu blog yayınına ve nasıl doğru isim kullanmayı bulmak için: Setting a Visual Studio breakpoint on a Win32 API function in user32.dll

+4

Better ikisini de kır. CreateProcessW'nin garip olmayan const davranışları nedeniyle, Unicode uygulamaları bile CreateProcessA'yı arayabilir. CreateProcess makrosu temeldeki iki işlev bildirimini gizlemez, böylece kalınabilir kalırlar. Bu, diğer işlev çiftleri için benzer makrolara da uygulanır. – MSalters

+2

Dikkat edilmesi gereken bir diğer nokta, öncelikle 'kernel32.dll' sembollerini indirmeniz gerektiğidir. Bunu Debug/Windows/Modules içindeki içerik menüsünden yapabilirsiniz. – ulidtko

+0

{,,,} sözdiziminin açıklaması buradadır: https://msdn.microsoft.com/en-us/library/wztycb7f(v=vs.100).aspx, neden olursa olsun, makalenin vs2010'dan daha yüksek görsel stüdyo –

İlgili konular