|
2 | 2 | title: "BP_LOCATION | Microsoft Docs"
|
3 | 3 | ms.date: "11/04/2016"
|
4 | 4 | ms.topic: "conceptual"
|
5 |
| -f1_keywords: |
| 5 | +f1_keywords: |
6 | 6 | - "BP_LOCATION"
|
7 |
| -helpviewer_keywords: |
| 7 | +helpviewer_keywords: |
8 | 8 | - "BP_LOCATION union"
|
9 | 9 | ms.assetid: ed1e874c-f289-4c31-8b6c-04dde03ad0f5
|
10 | 10 | author: "gregvanl"
|
11 | 11 | ms.author: "gregvanl"
|
12 | 12 | manager: jillfra
|
13 |
| -ms.workload: |
| 13 | +ms.workload: |
14 | 14 | - "vssdk"
|
15 | 15 | ---
|
16 | 16 | # BP_LOCATION
|
17 |
| -Specifies the type of structure used to describe the location of the breakpoint. |
18 |
| - |
19 |
| -## Syntax |
20 |
| - |
21 |
| -```cpp |
22 |
| -typedef struct _BP_LOCATION { |
23 |
| - BP_LOCATION_TYPE bpLocationType; |
24 |
| - union { |
25 |
| - BP_LOCATION_CODE_FILE_LINE bplocCodeFileLine; |
26 |
| - BP_LOCATION_CODE_FUNC_OFFSET bplocCodeFuncOffset; |
27 |
| - BP_LOCATION_CODE_CONTEXT bplocCodeContext; |
28 |
| - BP_LOCATION_CODE_STRING bplocCodeString; |
29 |
| - BP_LOCATION_CODE_ADDRESS bplocCodeAddress; |
30 |
| - BP_LOCATION_DATA_STRING bplocDataString; |
31 |
| - BP_LOCATION_RESOLUTION bplocResolution; |
32 |
| - DWORD unused; |
33 |
| - } bpLocation; |
34 |
| -} BP_LOCATION; |
35 |
| -``` |
36 |
| - |
37 |
| -```csharp |
38 |
| -public struct BP_LOCATION { |
39 |
| - public uint bpLocationType; |
40 |
| - public IntPtr unionmember1; |
41 |
| - public IntPtr unionmember2; |
42 |
| - public IntPtr unionmember3; |
43 |
| - public IntPtr unionmember4; |
44 |
| -}; |
45 |
| -``` |
46 |
| - |
47 |
| -## Members |
48 |
| - `bpLocationType` |
49 |
| - A value from the [BP_LOCATION_TYPE](../../../extensibility/debugger/reference/bp-location-type.md) enumeration used to interpret the `bpLocation` union or the `unionmemberX` members. |
50 |
| - |
51 |
| - `bpLocation`.`bplocCodeFileLine` |
52 |
| - [C++ only] Contains the [BP_LOCATION_CODE_FILE_LINE](../../../extensibility/debugger/reference/bp-location-code-file-line.md) structure if `bpLocationType` = `BPLT_CODE_FILE_LINE`. |
53 |
| - |
54 |
| - `bpLocation.bplocCodeFuncOffset` |
55 |
| - [C++ only] Contains the [BP_LOCATION_CODE_FUNC_OFFSET](../../../extensibility/debugger/reference/bp-location-code-func-offset.md) structure if `bpLocationType` = `BPLT_CODE_FUNC_OFFSET`. |
56 |
| - |
57 |
| - `bpLocation.bplocCodeContext` |
58 |
| - [C++ only] Contains the [BP_LOCATION_CODE_CONTEXT](../../../extensibility/debugger/reference/bp-location-code-context.md) structure if `bpLocationType` = `BPLT_CODE_CONTEXT`. |
59 |
| - |
60 |
| - `bpLocation.bplocCodeString` |
61 |
| - [C++ only] Contains the [BP_LOCATION_CODE_STRING](../../../extensibility/debugger/reference/bp-location-code-string.md) structure if `bpLocationType` = `BPLT_CODE_STRING`. |
62 |
| - |
63 |
| - `bpLocation.bplocCodeAddress` |
64 |
| - [C++ only] Contains the [BP_LOCATION_CODE_ADDRESS](../../../extensibility/debugger/reference/bp-location-code-address.md) structure if `bpLocationType` = `BPLT_CODE_ADDRESS`. |
65 |
| - |
66 |
| - `bpLocation.bplocDataString` |
67 |
| - [C++ only] Contains the [BP_LOCATION_DATA_STRING](../../../extensibility/debugger/reference/bp-location-data-string.md) structure if `bpLocationType` = `BPLT_DATA_STRING`. |
68 |
| - |
69 |
| - `bpLocation.bplocResolution` |
70 |
| - [C++ only] Contains the [BP_LOCATION_RESOLUTION](../../../extensibility/debugger/reference/bp-location-resolution.md) structure if `bpLocationType` = `BPLT_RESOLUTION`. |
71 |
| - |
72 |
| - `unionmember1` |
73 |
| - [C# only] See Remarks on how to interpret. |
74 |
| - |
75 |
| - `unionmember2` |
76 |
| - [C# only] See Remarks on how to interpret. |
77 |
| - |
78 |
| - `unionmember3` |
79 |
| - [C# only] See Remarks on how to interpret. |
80 |
| - |
81 |
| - `unionmember4` |
82 |
| - [C# only] See Remarks on how to interpret. |
83 |
| - |
84 |
| -## Remarks |
85 |
| - This structure is a member of the [BP_REQUEST_INFO](../../../extensibility/debugger/reference/bp-request-info.md) and [BP_REQUEST_INFO2](../../../extensibility/debugger/reference/bp-request-info2.md) structures. |
86 |
| - |
87 |
| - [C# only] The `unionmemberX` members are interpreted according to the following table. Look down the left column for the `bpLocationType` value then look across the other columns to determine what each `unionmemberX` member represents and marshal the `unionmemberX` accordingly. See the example for a way to interpret a part of this structure in C#. |
88 |
| - |
89 |
| -|`bpLocationType`|`unionmember1`|`unionmember2`|`unionmember3`|`unionmember4`| |
90 |
| -|----------------------|--------------------|--------------------|--------------------|--------------------| |
91 |
| -|`BPLT_CODE_FILE_LINE`|`string` (a context)|[IDebugDocumentPosition2](../../../extensibility/debugger/reference/idebugdocumentposition2.md)|-|-| |
92 |
| -|`BPLT_CODE_FUNC_OFFSET`|`string` (a context)|[IDebugFunctionPosition2](../../../extensibility/debugger/reference/idebugfunctionposition2.md)|-|-| |
93 |
| -|`BPLT_CODE_CONTEXT`|[IDebugCodeContext2](../../../extensibility/debugger/reference/idebugcodecontext2.md)|-|-|-| |
94 |
| -|`BPLT_CODE_STRING`|`string` (a context)|`string` (conditional expression)|-|-| |
95 |
| -|`BPLT_CODE_ADDRESS`|`string` (a context)|`string` (module URL)|`string` (function name)|`string` (address)| |
96 |
| -|`BPLT_DATA_STRING`|[IDebugThread2](../../../extensibility/debugger/reference/idebugthread2.md)|`string` (a context)|`string` (data expression)|`uint` (number of elements)| |
97 |
| -|`BPLT_RESOLUTION`|[IDebugBreakpointResolution2](../../../extensibility/debugger/reference/idebugbreakpointresolution2.md)|-|-|-| |
98 |
| - |
99 |
| -## Example |
100 |
| - This example shows how to interpret the `BP_LOCATION` structure in C# for the `BPLT_DATA_STRING` type. This particular type shows how to interpret all four `unionmemberX` members in all possible formats (object, string, and number). |
101 |
| - |
102 |
| -```csharp |
103 |
| -using System; |
104 |
| -using System.Runtime.Interop.Services; |
105 |
| -using Microsoft.VisualStudio.Debugger.Interop; |
106 |
| - |
107 |
| -namespace MyPackage |
108 |
| -{ |
109 |
| - public class MyClass |
110 |
| - { |
111 |
| - public void Interpret(BP_LOCATION bp) |
112 |
| - { |
113 |
| - if (bp.bpLocationType == (uint)enum_BP_LOCATION_TYPE.BPLT_DATA_STRING) |
114 |
| - { |
115 |
| - IDebugThread2 pThread = (IDebugThread2)Marshal.GetObjectForIUnknown(bp.unionmember1); |
116 |
| - string context = Marshal.PtrToStringBSTR(bp.unionmember2); |
117 |
| - string dataExpression = Marshal.PtrToStringBSTR(bp.unionmember3); |
118 |
| - uint numElements = (uint)Marshal.ReadInt32(bp.unionmember4); |
119 |
| - } |
120 |
| - } |
121 |
| - } |
122 |
| -} |
123 |
| -``` |
124 |
| - |
125 |
| -## Requirements |
126 |
| - Header: msdbg.h |
127 |
| - |
128 |
| - Namespace: Microsoft.VisualStudio.Debugger.Interop |
129 |
| - |
130 |
| - Assembly: Microsoft.VisualStudio.Debugger.Interop.dll |
131 |
| - |
132 |
| -## See Also |
133 |
| - [Structures and Unions](../../../extensibility/debugger/reference/structures-and-unions.md) |
134 |
| - [BP_REQUEST_INFO](../../../extensibility/debugger/reference/bp-request-info.md) |
135 |
| - [BP_LOCATION_CODE_FILE_LINE](../../../extensibility/debugger/reference/bp-location-code-file-line.md) |
136 |
| - [BP_LOCATION_CODE_FUNC_OFFSET](../../../extensibility/debugger/reference/bp-location-code-func-offset.md) |
137 |
| - [BP_LOCATION_CODE_CONTEXT](../../../extensibility/debugger/reference/bp-location-code-context.md) |
138 |
| - [BP_LOCATION_CODE_STRING](../../../extensibility/debugger/reference/bp-location-code-string.md) |
139 |
| - [BP_LOCATION_CODE_ADDRESS](../../../extensibility/debugger/reference/bp-location-code-address.md) |
140 |
| - [BP_LOCATION_DATA_STRING](../../../extensibility/debugger/reference/bp-location-data-string.md) |
141 |
| - [BP_LOCATION_RESOLUTION](../../../extensibility/debugger/reference/bp-location-resolution.md) |
| 17 | +Specifies the type of structure used to describe the location of the breakpoint. |
| 18 | + |
| 19 | +## Syntax |
| 20 | + |
| 21 | +```cpp |
| 22 | +typedef struct _BP_LOCATION { |
| 23 | + BP_LOCATION_TYPE bpLocationType; |
| 24 | + union { |
| 25 | + BP_LOCATION_CODE_FILE_LINE bplocCodeFileLine; |
| 26 | + BP_LOCATION_CODE_FUNC_OFFSET bplocCodeFuncOffset; |
| 27 | + BP_LOCATION_CODE_CONTEXT bplocCodeContext; |
| 28 | + BP_LOCATION_CODE_STRING bplocCodeString; |
| 29 | + BP_LOCATION_CODE_ADDRESS bplocCodeAddress; |
| 30 | + BP_LOCATION_DATA_STRING bplocDataString; |
| 31 | + BP_LOCATION_RESOLUTION bplocResolution; |
| 32 | + DWORD unused; |
| 33 | + } bpLocation; |
| 34 | +} BP_LOCATION; |
| 35 | +``` |
| 36 | +
|
| 37 | +```csharp |
| 38 | +public struct BP_LOCATION { |
| 39 | + public uint bpLocationType; |
| 40 | + public IntPtr unionmember1; |
| 41 | + public IntPtr unionmember2; |
| 42 | + public IntPtr unionmember3; |
| 43 | + public IntPtr unionmember4; |
| 44 | +}; |
| 45 | +``` |
| 46 | + |
| 47 | +## Members |
| 48 | +`bpLocationType` |
| 49 | +A value from the [BP_LOCATION_TYPE](../../../extensibility/debugger/reference/bp-location-type.md) enumeration used to interpret the `bpLocation` union or the `unionmemberX` members. |
| 50 | + |
| 51 | +`bpLocation`.`bplocCodeFileLine` |
| 52 | +[C++ only] Contains the [BP_LOCATION_CODE_FILE_LINE](../../../extensibility/debugger/reference/bp-location-code-file-line.md) structure if `bpLocationType` = `BPLT_CODE_FILE_LINE`. |
| 53 | + |
| 54 | +`bpLocation.bplocCodeFuncOffset` |
| 55 | +[C++ only] Contains the [BP_LOCATION_CODE_FUNC_OFFSET](../../../extensibility/debugger/reference/bp-location-code-func-offset.md) structure if `bpLocationType` = `BPLT_CODE_FUNC_OFFSET`. |
| 56 | + |
| 57 | +`bpLocation.bplocCodeContext` |
| 58 | +[C++ only] Contains the [BP_LOCATION_CODE_CONTEXT](../../../extensibility/debugger/reference/bp-location-code-context.md) structure if `bpLocationType` = `BPLT_CODE_CONTEXT`. |
| 59 | + |
| 60 | +`bpLocation.bplocCodeString` |
| 61 | +[C++ only] Contains the [BP_LOCATION_CODE_STRING](../../../extensibility/debugger/reference/bp-location-code-string.md) structure if `bpLocationType` = `BPLT_CODE_STRING`. |
| 62 | + |
| 63 | +`bpLocation.bplocCodeAddress` |
| 64 | +[C++ only] Contains the [BP_LOCATION_CODE_ADDRESS](../../../extensibility/debugger/reference/bp-location-code-address.md) structure if `bpLocationType` = `BPLT_CODE_ADDRESS`. |
| 65 | + |
| 66 | +`bpLocation.bplocDataString` |
| 67 | +[C++ only] Contains the [BP_LOCATION_DATA_STRING](../../../extensibility/debugger/reference/bp-location-data-string.md) structure if `bpLocationType` = `BPLT_DATA_STRING`. |
| 68 | + |
| 69 | +`bpLocation.bplocResolution` |
| 70 | +[C++ only] Contains the [BP_LOCATION_RESOLUTION](../../../extensibility/debugger/reference/bp-location-resolution.md) structure if `bpLocationType` = `BPLT_RESOLUTION`. |
| 71 | + |
| 72 | +`unionmember1` |
| 73 | +[C# only] See Remarks on how to interpret. |
| 74 | + |
| 75 | +`unionmember2` |
| 76 | +[C# only] See Remarks on how to interpret. |
| 77 | + |
| 78 | +`unionmember3` |
| 79 | +[C# only] See Remarks on how to interpret. |
| 80 | + |
| 81 | +`unionmember4` |
| 82 | +[C# only] See Remarks on how to interpret. |
| 83 | + |
| 84 | +## Remarks |
| 85 | +This structure is a member of the [BP_REQUEST_INFO](../../../extensibility/debugger/reference/bp-request-info.md) and [BP_REQUEST_INFO2](../../../extensibility/debugger/reference/bp-request-info2.md) structures. |
| 86 | + |
| 87 | +[C# only] The `unionmemberX` members are interpreted according to the following table. Look down the left column for the `bpLocationType` value then look across the other columns to determine what each `unionmemberX` member represents and marshal the `unionmemberX` accordingly. See the example for a way to interpret a part of this structure in C#. |
| 88 | + |
| 89 | +|`bpLocationType`|`unionmember1`|`unionmember2`|`unionmember3`|`unionmember4`| |
| 90 | +|----------------------|--------------------|--------------------|--------------------|--------------------| |
| 91 | +|`BPLT_CODE_FILE_LINE`|`string` (a context)|[IDebugDocumentPosition2](../../../extensibility/debugger/reference/idebugdocumentposition2.md)|-|-| |
| 92 | +|`BPLT_CODE_FUNC_OFFSET`|`string` (a context)|[IDebugFunctionPosition2](../../../extensibility/debugger/reference/idebugfunctionposition2.md)|-|-| |
| 93 | +|`BPLT_CODE_CONTEXT`|[IDebugCodeContext2](../../../extensibility/debugger/reference/idebugcodecontext2.md)|-|-|-| |
| 94 | +|`BPLT_CODE_STRING`|`string` (a context)|`string` (conditional expression)|-|-| |
| 95 | +|`BPLT_CODE_ADDRESS`|`string` (a context)|`string` (module URL)|`string` (function name)|`string` (address)| |
| 96 | +|`BPLT_DATA_STRING`|[IDebugThread2](../../../extensibility/debugger/reference/idebugthread2.md)|`string` (a context)|`string` (data expression)|`uint` (number of elements)| |
| 97 | +|`BPLT_RESOLUTION`|[IDebugBreakpointResolution2](../../../extensibility/debugger/reference/idebugbreakpointresolution2.md)|-|-|-| |
| 98 | + |
| 99 | +## Example |
| 100 | +This example shows how to interpret the `BP_LOCATION` structure in C# for the `BPLT_DATA_STRING` type. This particular type shows how to interpret all four `unionmemberX` members in all possible formats (object, string, and number). |
| 101 | + |
| 102 | +```csharp |
| 103 | +using System; |
| 104 | +using System.Runtime.Interop.Services; |
| 105 | +using Microsoft.VisualStudio.Debugger.Interop; |
| 106 | + |
| 107 | +namespace MyPackage |
| 108 | +{ |
| 109 | + public class MyClass |
| 110 | + { |
| 111 | + public void Interpret(BP_LOCATION bp) |
| 112 | + { |
| 113 | + if (bp.bpLocationType == (uint)enum_BP_LOCATION_TYPE.BPLT_DATA_STRING) |
| 114 | + { |
| 115 | + IDebugThread2 pThread = (IDebugThread2)Marshal.GetObjectForIUnknown(bp.unionmember1); |
| 116 | + string context = Marshal.PtrToStringBSTR(bp.unionmember2); |
| 117 | + string dataExpression = Marshal.PtrToStringBSTR(bp.unionmember3); |
| 118 | + uint numElements = (uint)Marshal.ReadInt32(bp.unionmember4); |
| 119 | + } |
| 120 | + } |
| 121 | + } |
| 122 | +} |
| 123 | +``` |
| 124 | + |
| 125 | +## Requirements |
| 126 | +Header: msdbg.h |
| 127 | + |
| 128 | +Namespace: Microsoft.VisualStudio.Debugger.Interop |
| 129 | + |
| 130 | +Assembly: Microsoft.VisualStudio.Debugger.Interop.dll |
| 131 | + |
| 132 | +## See Also |
| 133 | +[Structures and Unions](../../../extensibility/debugger/reference/structures-and-unions.md) |
| 134 | +[BP_REQUEST_INFO](../../../extensibility/debugger/reference/bp-request-info.md) |
| 135 | +[BP_LOCATION_CODE_FILE_LINE](../../../extensibility/debugger/reference/bp-location-code-file-line.md) |
| 136 | +[BP_LOCATION_CODE_FUNC_OFFSET](../../../extensibility/debugger/reference/bp-location-code-func-offset.md) |
| 137 | +[BP_LOCATION_CODE_CONTEXT](../../../extensibility/debugger/reference/bp-location-code-context.md) |
| 138 | +[BP_LOCATION_CODE_STRING](../../../extensibility/debugger/reference/bp-location-code-string.md) |
| 139 | +[BP_LOCATION_CODE_ADDRESS](../../../extensibility/debugger/reference/bp-location-code-address.md) |
| 140 | +[BP_LOCATION_DATA_STRING](../../../extensibility/debugger/reference/bp-location-data-string.md) |
| 141 | +[BP_LOCATION_RESOLUTION](../../../extensibility/debugger/reference/bp-location-resolution.md) |
0 commit comments