Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Fungsi dan deklarasi ini adalah fungsi pembantu global untuk menerapkan mesin debug, evaluator ekspresi, dan penyedia simbol di C++.
Catatan
Tidak ada versi terkelola dari fungsi dan deklarasi ini saat ini.
Agar mesin debug, evaluator ekspresi, dan penyedia simbol digunakan oleh Visual Studio, mereka harus didaftarkan. Ini dilakukan dengan mengatur subkuntang dan entri registri, atau dikenal sebagai "mengatur metrik." Fungsi global berikut dirancang untuk memudahkan proses pembaruan metrik ini. Lihat bagian tentang Lokasi Registri untuk mengetahui tata letak setiap subkuntang registri yang diperbarui oleh fungsi-fungsi ini.
Fungsi Metrik Umum
Ini adalah fungsi umum yang digunakan oleh mesin debug. Fungsi khusus untuk evaluator ekspresi dan penyedia simbol dirinci nanti.
Metode GetMetric
Mengambil nilai metrik dari registri.
HRESULT GetMetric(
LPCWSTR pszMachine,
LPCWSTR pszType,
REFGUID guidSection,
LPCWSTR pszMetric,
DWORD * pdwValue,
LPCWSTR pszAltRoot
);
| Parameter | Deskripsi |
|---|---|
| pszMachine | [di] Nama mesin jarak jauh yang register-nya akan ditulis (NULL berarti komputer lokal). |
| pszType | [di] Salah satu jenis metrik. |
| guidSection | [di] GUID mesin, evaluator, pengecualian, dll. Ini menentukan sub bagian di bawah jenis metrik untuk elemen tertentu. |
| pszMetric | [di] Metrik yang akan diperoleh. Ini sesuai dengan nama nilai tertentu. |
| pdwValue | [di] Lokasi penyimpanan nilai dari metrik. Ada beberapa rasa GetMetric yang dapat mengembalikan DWORD (seperti dalam contoh ini), BSTR, GUID, atau array GUID. |
| pszAltRoot | [di] Akar registri alternatif untuk digunakan. Atur ke NULL untuk menggunakan default. |
Metode SetMetric
Mengatur nilai metrik yang ditentukan dalam registri.
HRESULT SetMetric(
LPCWSTR pszType,
REFGUID guidSection,
LPCWSTR pszMetric,
const DWORD dwValue,
bool fUserSpecific,
LPCWSTR pszAltRoot
);
| Parameter | Deskripsi |
|---|---|
| pszType | [di] Salah satu jenis metrik. |
| guidSection | [di] GUID mesin, evaluator, pengecualian, dll. Ini menentukan sub bagian di bawah jenis metrik untuk elemen tertentu. |
| pszMetric | [di] Metrik yang akan diperoleh. Ini sesuai dengan nama nilai tertentu. |
| dwValue | [di] Lokasi penyimpanan nilai dalam metrik. Ada beberapa rasa SetMetric yang dapat menyimpan DWORD (dalam contoh ini), BSTR, GUID, atau array GUID. |
| fUserSpecific | [di] TRUE jika metrik spesifik pengguna dan jika harus ditulis ke sarang pengguna alih-alih sarang komputer lokal. |
| pszAltRoot | [di] Akar registri alternatif untuk digunakan. Atur ke NULL untuk menggunakan default. |
Metode RemoveMetric
Menghapus metrik yang ditentukan dari registri.
HRESULT RemoveMetric(
LPCWSTR pszType,
REFGUID guidSection,
LPCWSTR pszMetric,
LPCWSTR pszAltRoot
);
| Parameter | Deskripsi |
|---|---|
| pszType | [di] Salah satu jenis metrik. |
| guidSection | [di] GUID mesin, evaluator, pengecualian, dll. Ini menentukan sub bagian di bawah jenis metrik untuk elemen tertentu. |
| pszMetric | [di] Metrik yang akan dihapus. Ini sesuai dengan nama nilai tertentu. |
| pszAltRoot | [di] Akar registri alternatif untuk digunakan. Atur ke NULL untuk menggunakan default. |
Metode EnumMetricSections
Menghitung berbagai bagian metrik dalam registri.
HRESULT EnumMetricSections(
LPCWSTR pszMachine,
LPCWSTR pszType,
GUID * rgguidSections,
DWORD * pdwSize,
LPCWSTR pszAltRoot
);
| Parameter | Deskripsi |
|---|---|
| pszMachine | [di] Nama mesin jarak jauh yang register-nya akan ditulis (NULL berarti komputer lokal). |
| pszType | [di] Salah satu jenis metrik. |
| rgguidSections | [masuk, keluar] Array GUID yang telah dialokasikan sebelumnya untuk diisi. |
| pdwSize | [di] Jumlah maksimum GUID yang dapat disimpan dalam rgguidSections array. |
| pszAltRoot | [di] Akar registri alternatif untuk digunakan. Atur ke NULL untuk menggunakan default. |
Fungsi Evaluator Ekspresi
| Function | Deskripsi |
|---|---|
| GetEEMetric | Mengambil nilai metrik dari registri. |
| SetEEMetric | Mengatur nilai metrik yang ditentukan dalam registri. |
| RemoveEEMetric | Menghapus metrik yang ditentukan dari registri. |
| GetEEMetricFile | Mendapatkan nama file dari metrik yang ditentukan dan memuatnya, mengembalikan konten file sebagai string. |
Fungsi Pengecualian
| Function | Deskripsi |
|---|---|
| GetExceptionMetric | Mengambil nilai metrik dari registri. |
| SetExceptionMetric | Mengatur nilai metrik yang ditentukan dalam registri. |
| RemoveExceptionMetric | Menghapus metrik yang ditentukan dari registri. |
| RemoveAllExceptionMetrics | Menghapus semua metrik pengecualian dari registri. |
Fungsi Penyedia Simbol
| Function | Deskripsi |
|---|---|
| GetSPMetric | Mengambil nilai metrik dari registri. |
| SetSPMetric | Mengatur nilai metrik yang ditentukan dalam registri. |
| RemoveSPMetric | Menghapus metrik yang ditentukan dari registri. |
Fungsi Enumerasi
| Function | Deskripsi |
|---|---|
| EnumMetricSections | Menghitung semua metrik untuk jenis metrik tertentu. |
| EnumDebugEngine | Menghitung mesin debug terdaftar. |
| EnumEEs | Menghitung evaluator ekspresi terdaftar. |
| EnumExceptionMetrics | Menghitung semua metrik pengecualian. |
Definisi Metrik
Definisi ini dapat digunakan untuk nama metrik yang telah ditentukan sebelumnya. Nama sesuai dengan berbagai kunci registri dan nama nilai dan semuanya didefinisikan sebagai string karakter lebar: misalnya, extern LPCWSTR metrictypeEngine.
| Jenis Metrik yang Telah Ditentukan Sebelumnya | Deskripsi: Kunci dasar untuk.... |
|---|---|
| metriktypeEngine | Semua metrik mesin debug. |
| metrictypePortSupplier | Semua metrik pemasok port. |
| metrictypeException | Semua metrik pengecualian. |
| metricttypeEEExtension | Semua ekstensi evaluator ekspresi. |
| Properti Mesin Debug | Deskripsi |
|---|---|
| metricAddressBP | Atur ke nonzero untuk menunjukkan dukungan untuk titik henti alamat. |
| metricAlwaysLoadLocal | Atur ke nonzero untuk selalu memuat mesin debug secara lokal. |
| metricLoadInDebuggeeSession | TIDAK DIGUNAKAN |
| metricLoadedByDebuggee | Atur ke nonzero untuk menunjukkan bahwa mesin debug akan selalu dimuat dengan atau oleh program yang sedang di-debug. |
| metrikAttach | Atur ke nonzero untuk menunjukkan dukungan untuk lampiran ke program yang ada. |
| metricCallStackBP | Atur ke nonzero untuk menunjukkan dukungan untuk titik henti tumpukan panggilan. |
| metricConditionalBP | Atur ke nonzero untuk menunjukkan dukungan untuk pengaturan titik henti kondisi. |
| metricDataBP | Atur ke nonzero untuk menunjukkan dukungan untuk pengaturan titik henti pada perubahan data. |
| metricDisassembly | Atur ke nonzero untuk menunjukkan dukungan untuk produksi daftar pembongkaran. |
| metricDumpWriting | Atur ke nonzero untuk menunjukkan dukungan untuk penulisan cadangan (pembuangan memori ke perangkat output). |
| metricENC | Atur ke nonzero untuk menunjukkan dukungan untuk Edit dan Lanjutkan. Catatan: Mesin debug kustom tidak boleh mengatur ini atau harus selalu mengaturnya ke 0. |
| metricExceptions | Atur ke nonzero untuk menunjukkan dukungan untuk pengecualian. |
| metricFunctionBP | Atur ke nonzero untuk menunjukkan dukungan untuk titik henti bernama (titik henti yang putus saat nama fungsi tertentu dipanggil). |
| metricHitCountBP | Atur ke nonzero untuk menunjukkan dukungan untuk pengaturan titik henti "titik temuan" (titik henti yang dipicu hanya setelah mencapai beberapa kali). |
| metricJITDebug | Atur ke nonzero untuk menunjukkan dukungan untuk penelusuran kesalahan just-in-time (debugger diluncurkan saat pengecualian terjadi dalam proses yang sedang berjalan). |
| metricMemory | TIDAK DIGUNAKAN |
| metricPortSupplier | Atur ini ke CLSID pemasok port jika diimplementasikan. |
| metricRegisters | TIDAK DIGUNAKAN |
| metricSetNextStatement | Atur ke nonzero untuk menunjukkan dukungan untuk mengatur pernyataan berikutnya (yang melewati eksekusi pernyataan perantara). |
| metricSuspendThread | Atur ke nonzero untuk menunjukkan dukungan untuk menangguhkan eksekusi utas. |
| metricWarnIfNoSymbols | Atur ke nonzero untuk menunjukkan bahwa pengguna harus diberi tahu jika tidak ada simbol. |
| metricProgramProvider | Atur ini ke CLSID penyedia program. |
| metricAlwaysLoadProgramProviderLocal | Atur ini ke nonzero untuk menunjukkan bahwa penyedia program harus selalu dimuat secara lokal. |
| metricEngineCanWatchProcess | Atur ini ke nonzero untuk menunjukkan bahwa mesin debug akan menonton peristiwa proses alih-alih penyedia program. |
| metricRemoteDebugging | Atur ini ke nonzero untuk menunjukkan dukungan untuk penelusuran kesalahan jarak jauh. |
| metricEncUseNativeBuilder | Atur ini ke nonzero untuk menunjukkan bahwa Edit dan Lanjutkan Manager harus menggunakan encbuild.dll mesin debug untuk dibangun untuk Edit dan Lanjutkan. Catatan: Mesin debug kustom tidak boleh mengatur ini atau harus selalu mengaturnya ke 0. |
| metricLoadUnderWOW64 | Atur ini ke nonzero untuk menunjukkan bahwa mesin debug harus dimuat dalam proses debuggee di bawah WOW saat men-debug proses 64-bit; jika tidak, mesin debug akan dimuat dalam proses Visual Studio (yang berjalan di bawah WOW64). |
| metricLoadProgramProviderUnderWOW64 | Atur ini ke nonzero untuk menunjukkan bahwa penyedia program harus dimuat dalam proses debuggee saat men-debug proses 64-bit di bawah WOW; jika tidak, itu akan dimuat dalam proses Visual Studio. |
| metrikStopOnExceptionCrossingManagedBoundary | Atur ini ke nonzero untuk menunjukkan bahwa proses harus berhenti jika pengecualian yang tidak tertangani dilemparkan ke seluruh batas kode terkelola/tidak terkelola. |
| metricAutoSelectPriority | Atur ini ke prioritas untuk pemilihan otomatis mesin debug (nilai yang lebih tinggi sama dengan prioritas yang lebih tinggi). |
| metricAutoSelectIncompatibleList | Kunci registri yang berisi entri yang menentukan GUID untuk mesin debug yang akan diabaikan dalam pilihan otomatis. Entri ini adalah angka (0, 1, 2, dan sebagainya) dengan GUID yang dinyatakan sebagai string. |
| metricIncompatibleList | Kunci registri yang berisi entri yang menentukan GUID untuk mesin debug yang tidak kompatibel dengan mesin debug ini. |
| metricDisableJITOptimization | Atur ini ke nonzero untuk menunjukkan bahwa pengoptimalan just-in-time (untuk kode terkelola) harus dinonaktifkan selama penelusuran kesalahan. |
| Properti Evaluator Ekspresi | Deskripsi |
|---|---|
| metricEngine | Ini menyimpan jumlah mesin debug yang mendukung evaluator ekspresi yang ditentukan. |
| metricPreloadModules | Atur ini ke nonzero untuk menunjukkan bahwa modul harus dimuat sebelumnya saat evaluator ekspresi diluncurkan terhadap program. |
| metricThisObjectName | Atur ini ke nama objek "ini". |
| Properti Ekstensi Evaluator Ekspresi | Deskripsi |
|---|---|
| metricExtensionDll | Nama dll yang mendukung ekstensi ini. |
| metricExtensionRegistersSupported | Daftar register yang didukung. |
| metricExtensionRegistersEntryPoint | Titik masuk untuk mengakses register. |
| metricExtensionTypesSupported | Daftar jenis yang didukung. |
| metricExtensionTypesEntryPoint | Titik masuk untuk mengakses jenis. |
| Properti Pemasok Port | Deskripsi |
|---|---|
| metricPortPickerCLSID | CLSID pemilih port (kotak dialog yang dapat digunakan pengguna untuk memilih port dan menambahkan port yang akan digunakan untuk penelusuran kesalahan). |
| metricDisallowUserEnteredPorts | Bukan nol jika port yang dimasukkan pengguna tidak dapat ditambahkan ke pemasok port (ini membuat kotak dialog pemilih port pada dasarnya baca-saja). |
| metricPidBase | ID proses dasar yang digunakan oleh pemasok port saat mengalokasikan ID proses. |
| Jenis Penyimpanan SP yang telah ditentukan sebelumnya | Deskripsi |
|---|---|
| storetypeFile | Simbol disimpan dalam file terpisah. |
| storetypeMetadata | Simbol disimpan sebagai metadata dalam rakitan. |
| Properti Lain-lain | Deskripsi |
|---|---|
| metricShowNonUserCode | Atur ini ke nonzero untuk menampilkan kode nonpengguna. |
| metricJustMyCodeStepping | Atur ini ke nonzero untuk menunjukkan bahwa langkah hanya dapat terjadi dalam kode pengguna. |
| metricCLSID | CLSID untuk objek dari jenis metrik tertentu. |
| metricName | Nama yang mudah digunakan untuk objek dari jenis metrik tertentu. |
| metricLanguage | Nama bahasa. |
Lokasi Registri
Metrik dibaca dari dan ditulis ke registri, khususnya VisualStudio di subkunia.
Catatan
Sebagian besar waktu, metrik akan ditulis ke kunci HKEY_LOCAL_MACHINE. Namun, terkadang HKEY_CURRENT_USER akan menjadi kunci tujuan. Dbgmetric.lib menangani kedua kunci. Saat mendapatkan metrik, metrik mencari HKEY_CURRENT_USER terlebih dahulu, lalu HKEY_LOCAL_MACHINE. Saat mengatur metrik, parameter menentukan kunci tingkat atas mana yang akan digunakan.
[kunci registri]\
Software\
Microsoft\
VisualStudio\
[versi root]\
[akar metrik]\
[jenis metrik]\
[metrik] = [nilai metrik]
[metrik] = [nilai metrik]
[metrik] = [nilai metrik]
| Placeholder | Deskripsi |
|---|---|
| [kunci registri] | HKEY_CURRENT_USER atau HKEY_LOCAL_MACHINE. |
| [versi root] | Versi Visual Studio (misalnya, , 7.0, 7.1atau 8.0). Namun, root ini juga dapat dimodifikasi menggunakan sakelar /rootsuffix ke devenv.exe. Untuk VSIP, pengubah ini biasanya Exp, sehingga root versinya adalah, misalnya, 8.0Exp. |
| [akar metrik] | Ini adalah AD7Metrics atau AD7Metrics(Debug), tergantung pada apakah versi debug dbgmetric.lib digunakan. Catatan: Apakah dbgmetric.lib digunakan atau tidak, konvensi penamaan ini harus dipatuhi jika Anda memiliki perbedaan antara versi debug dan rilis yang harus tercermin dalam registri. |
| [jenis metrik] | Jenis metrik yang akan ditulis: Engine, , ExpressionEvaluatorSymbolProvider, dll. Ini semua didefinisikan sebagai dalam dbgmetric.h sebagai metricTypeXXXX, di mana XXXX adalah nama jenis tertentu. |
| [metrik] | Nama entri yang akan ditetapkan nilai untuk mengatur metrik. Organisasi metrik yang sebenarnya tergantung pada jenis metrik. |
| [nilai metrik] | Nilai yang ditetapkan ke metrik. Jenis nilai harus memiliki (string, angka, dll.) tergantung pada metrik. |
Catatan
Semua GUID disimpan dalam format {GUID}. Contohnya, {123D150B-FA18-461C-B218-45B3E4589F9B}.
Mesin Debug
Berikut ini adalah organisasi metrik mesin debug dalam registri. Engineadalah nama jenis metrik untuk mesin debug dan sesuai dengan [jenis metrik] dalam subtree registri di atas.
Engine\
[panduan mesin]\
CLSID = [guid kelas]
[metrik] = [nilai metrik]
[metrik] = [nilai metrik]
[metrik] = [nilai metrik]
PortSupplier\
0 = [port supplier guid]
1 = [port supplier guid]
| Placeholder | Deskripsi |
|---|---|
| [panduan mesin] | GUID mesin debug. |
| [guid kelas] | GUID kelas yang mengimplementasikan mesin debug ini. |
| [port supplier guid] | GUID pemasok port, jika ada. Banyak mesin debug menggunakan pemasok port default dan oleh karena itu tidak menentukan pemasok mereka sendiri. Dalam hal ini, subkuntang PortSupplier akan tidak ada. |
Pemasok Port
Berikut ini adalah organisasi metrik pemasok port dalam registri. PortSupplier adalah nama jenis metrik untuk pemasok port dan sesuai dengan [jenis metrik].
PortSupplier\
[port supplier guid]\
CLSID = [guid kelas]
[metrik] = [nilai metrik]
[metrik] = [nilai metrik]
| Placeholder | Deskripsi |
|---|---|
| [port supplier guid] | GUID pemasok port |
| [guid kelas] | GUID kelas yang mengimplementasikan pemasok port ini |
Penyedia Simbol
Berikut ini adalah organisasi metrik pemasok simbol dalam registri. SymbolProvider adalah nama jenis metrik untuk penyedia simbol dan sesuai dengan [jenis metrik].
SymbolProvider\
[panduan penyedia simbol]\
file\
CLSID = [guid kelas]
[metrik] = [nilai metrik]
[metrik] = [nilai metrik]
metadata\
CLSID = [guid kelas]
[metrik] = [nilai metrik]
[metrik] = [nilai metrik]
| Placeholder | Deskripsi |
|---|---|
| [panduan penyedia simbol] | GUID penyedia simbol |
| [guid kelas] | GUID kelas yang mengimplementasikan penyedia simbol ini |
Evaluator Ekspresi
Berikut ini adalah organisasi metrik evaluator ekspresi dalam registri. ExpressionEvaluator adalah nama jenis metrik untuk evaluator ekspresi dan sesuai dengan [jenis metrik].
Catatan
Jenis metrik untuk ExpressionEvaluator tidak didefinisikan dalam dbgmetric.h, karena diasumsikan bahwa semua perubahan metrik untuk evaluator ekspresi akan melalui fungsi metrik evaluator ekspresi yang sesuai (tata letak ExpressionEvaluator subkunci agak rumit, sehingga detailnya tersembunyi di dalam dbgmetric.lib).
ExpressionEvaluator\
[panduan bahasa]\
[pemandu vendor]\
CLSID = [guid kelas]
[metrik] = [nilai metrik]
[metrik] = [nilai metrik]
Engine\
0 = [panduan mesin debug]
1 = [panduan mesin debug]
| Placeholder | Deskripsi |
|---|---|
| [panduan bahasa] | GUID bahasa |
| [pemandu vendor] | GUID vendor |
| [guid kelas] | GUID kelas yang mengimplementasikan evaluator ekspresi ini |
| [panduan mesin debug] | GUID mesin debug yang bekerja dengan evaluator ekspresi ini |
Ekstensi Evaluator Ekspresi
Berikut ini adalah organisasi metrik ekstensi evaluator ekspresi dalam registri. EEExtensions adalah nama jenis metrik untuk ekstensi evaluator ekspresi dan sesuai dengan [jenis metrik].
EEExtensions\
[panduan ekstensi]\
[metrik] = [nilai metrik]
[metrik] = [nilai metrik]
| Placeholder | Deskripsi |
|---|---|
| [panduan ekstensi] | GUID ekstensi evaluator ekspresi |
Pengecualian
Berikut ini adalah organisasi metrik pengecualian dalam registri. Exception adalah nama jenis metrik untuk pengecualian dan sesuai dengan [jenis metrik].
Exception\
[panduan mesin debug]\
[jenis pengecualian]\
[pengecualian]\
[metrik] = [nilai metrik]
[metrik] = [nilai metrik]
[pengecualian]\
[metrik] = [nilai metrik]
[metrik] = [nilai metrik]
| Placeholder | Deskripsi |
|---|---|
| [panduan mesin debug] | GUID mesin debug yang mendukung pengecualian. |
| [jenis pengecualian] | Judul umum untuk subkunjung yang mengidentifikasi kelas pengecualian yang dapat ditangani. Nama umumnya adalah Pengecualian C++, Pengecualian Win32, Pengecualian Runtime Bahasa Umum, dan Pemeriksaan Run-Time Asli. Nama-nama ini juga digunakan untuk mengidentifikasi kelas pengecualian tertentu kepada pengguna. |
| [pengecualian] | Nama untuk pengecualian: misalnya, _com_error atau Control-Break. Nama-nama ini juga digunakan untuk mengidentifikasi pengecualian tertentu kepada pengguna. |
Persyaratan
File-file ini terletak di direktori penginstalan Microsoft Visual Studio 2010 SDK (secara default, [drive]\Program Files\Microsoft Visual Studio 2010 SDK\).
Header: includes\dbgmetric.h
Pustaka: libs\ad2de.lib, libs\dbgmetric.lib