This article discusses how to enable diagnostic tracing for the Microsoft Distributed Transaction Coordinator (MS DTC) on a Windows Vista-based computer.
The following types of tracing
facilities are available:
| • | Transaction manager tracing Transaction manager (TM) tracing tracks transaction state
changes. It is generated by the MS DTC transaction manager. The output is in
binary format, and the output must be formatted. The transaction manager is part of the MS
DTC service. |
| • | Communication manager error tracing Communication manager (CM) error tracing tracks any process that loads the Msdtcprx.dll file and that uses the remote procedure call (RPC) interface of MS DTC to communicate with other MS DTC-related processes. The output is in text format. The "0x8004d00a" error is a typical error for which communication manager error tracing may be useful. |
Note Transaction manager tracing and communication manager error tracing are independent processes. You can independently enable transaction manager tracing and communication manager error tracing. Or, you can independently disable them.
Back to the top
Enable transaction manager tracing
You can use the Component Services
Microsoft Management Console (MMC) snap-in to enable transaction manager tracing. To do this, follow these steps:
| 1. | Click Start , click
All Programs, click Accessories, and then
click Run. |
| 2. | Type comexp.msc, and then click
OK. |
| 3. | Expand Component Services, expand
Computers, expand My Computer, expand
Distributed Transaction Manager, right-click Local
DTC, and then click Properties. |
| 4. | Click the Tracing tab. |
| 5. | On the Tracing tab, you can modify the
following TM tracing options:
| | Trace Output| | Trace Transactions| • | Trace All Transactions | | • | Trace Aborted Transactions | | • | Trace Long-Lived Transactions |
|
|
|
When you change the TM tracing configuration, the MS DTC service detects the changes. However, you do not have to recycle the process. For example, when you change the transactions that are traced or the location of the trace file, the MS DTC service detects the change in the registry. You do not have to restart the MS DTC service.
Back to the top
New MS DTC tracing system in Windows Vista
In Windows Vista, MS DTC has a new and extensive tracing system.
The new system has the following design goals:
| • | Only a single line of code is required to add a
formatted trace. |
| • | The trace is readable by humans on production computers
without a network. |
| • | Output options are flexible. |
| • | The trace is fast. |
| • | You do not have to restart the computer to change the
options. |
Back to the top
Configure tracing
Warning Serious problems might occur if you modify the registry incorrectly by using Registry Editor or by using another method. These problems might require that you reinstall the operating system. Microsoft cannot guarantee that these problems can be solved. Modify the registry at your own risk.
Trace configuration is located on the local node, in a registry key that is named Tracing under the MS DTC registry key. The Tracing registry key includes connection manager tracing. Previously, you used the TraceCMErr registry key to configure connection manager tracing. The Tracing registry key contains the following two subkeys:
| • | Sources The Sources subkey configures the kind of tracing. |
| • | Output The Output subkey configures where the tracing output is sent. |
Note Make sure that the process can access the Tracing registry key. By default, the Windows Vista configuration does not create this key and does not grant permissions to this key. You can use Registry Editor to configure tracing functionality.
To create tracing functionality registry entries, follow these steps:
| 1. | Click Start , click
All Programs, click Accessories, click
Run, type regedit , and then click
OK. |
| 2. | Locate and then click the following subkey: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Tracing |
| 3. | On the Edit menu, click New, and then click the data type of the entry. For example, click
DWORD (32-bit) Value. |
| 4. | Type the name of the desired source, and then press ENTER. For more information about the source names, see the table in the "Configure sources" section. |
| 5. | Right-click the new registry entry, click
Modify, type the value that you want in the Value
data box, and then click OK. |
| 6. | On the File menu, click
Exit. |
Configure sources
The Sources registry key contains a set of DWORD registry values that are listed in the following table.
| Name | Description |
|---|
| TRACE_MISC | Traces that cannot be categorized into
the other categories |
| TRACE_CM | Traces in the connection manager |
| TRACE_TRACE | The trace infrastructure itself |
| TRACE_SVC | Traces service and .exe file startup |
| TRACE_GATEWAY | Gateway source |
| TRACE_UI | Traces the user interface |
| TRACE_CONTACT | Traces the contact pool and
contacts |
| TRACE_UTIL | Traces utility routines that are called from
multiple locations |
| TRACE_CLUSTER | Traces the cluster-specific
(utility) code |
| TRACE_RESOURCE | Traces the cluster resource-specific code |
| TRACE_TIP | Transaction Internet Protocol (TIP) tracing source |
| TRACE_XA | XA Transaction Manager (XATM) tracing source |
| TRACE_LOG | Log tracing |
| TRACE_MTXOCI | MTS/OCI layer (Mtxoci.dll) tracing source |
| TRACE_ETWTRACE | Event Tracing for Windows (ETW) tracing source |
| TRACE_PROXY | Traces that are generated in the MSDTC proxy
DLL |
| TRACE_KTMRM | Tracing for integration with Kernel Transaction Manager |
| TRACE_VSSBACKUP | Tracing for integration with the Microsoft Visual SourceSafe backup and restore mechanism |
| TRACE_PERFMON | Tracing with support for performance
counters |
The DWORD value should be a number from 0 to 255. The
DWORD value indicates the level of tracing that occurs. The following table lists possible DWORD values.
| Value | Description |
|---|
| 0 | const BYTE TRACE_OFF |
| 1 | const BYTE TRACE_ERROR |
| 2 | const BYTE TRACE_WARNING |
| 3 | const BYTE TRACE_INFO |
| 4 | const BYTE TRACE_VERBOSE |
| 5 | const BYTE TRACE_VERY_VERBOSE |
| 6 | const BYTE TRACE_INOUT |
| 0xF0 | const BYTE TRACE_OBSCURE |
| 0xFF | const BYTE TRACE_EVERYTHING |
Note Higher values automatically include lower values. Therefore, when you enable the TRACE_INFO level, the TRACE_ERROR level is also enabled. Very few sources use any tracing that is higher than the TRACE_VERBOSE level.
Back to the top
Configure trace output
Warning Serious problems might occur if you modify the registry incorrectly by using Registry Editor or by using another method. These problems might require that you reinstall the operating system. Microsoft cannot guarantee that these problems can be solved. Modify the registry at your own risk.
The Output registry key contains a set of values that control where trace output
is sent.
These values are as follows:
| • | The TraceFilePath (REG_SZ) value is the root
folder in which trace files should be stored. Tracing is written to a file
in a folder that is named msdtc-X.log. In this folder name, X represents the
decimal PID of the process that creates the file. Make sure that all the processes
of interest can access the configured folder. Otherwise, trace
information will be lost. If this value is not set, traces are not sent to a file. |
| • | The MemoryBufferSize (REG_DWORD) value is the
size of the circular buffer in which trace messages are stored. If this value is set to 0, memory tracing is disabled. By default, this value is 10 MB. You may have to increase this value if you enable verbose tracing. |
| • | The DebugOutEnabled (REG_DWORD) value enables or
disables output to the debugger. If the value is nonzero, the output is
enabled. By defaut, this Output registry key is disabled. |
When you change the connection manager error-tracing configuration, the changes
take effect when a process that loads the Msdtcprx.dll file is recycled. For
example, the changes to the connection manager error-tracing configuration take effect when the
MS DTC service process is recycled.
Alternatively, you can create a
.reg file, and then you can use Registry Editor to import the file. To do this, follow
these steps:
| 1. | Create a new .reg file that contains the following code example.Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Tracing]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Tracing\Output]
"DebugOutEnabled"=dword:00000000
"TraceFilePath"=""
"MemoryBufferSize"=dword:0000000a
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Tracing\Sources]
"TRACE_MISC"=dword:00000000
"TRACE_CM"=dword:00000000
"TRACE_TRACE"=dword:00000000
"TRACE_SVC"=dword:00000000
"TRACE_GATEWAY"=dword:00000000
"TRACE_UI"=dword:00000000
"TRACE_CONTACT"=dword:00000000
"TRACE_UTIL"=dword:00000000
"TRACE_CLUSTER"=dword:00000000
"TRACE_RESOURCE"=dword:00000000
"TRACE_TIP"=dword:00000000
"TRACE_XA"=dword:00000000
"TRACE_LOG"=dword:00000000
"TRACE_MTXOCI"=dword:00000000
"TRACE_ETWTRACE"=dword:00000000
"TRACE_PROXY"=dword:00000000
"TRACE_KTMRM"=dword:00000000
"TRACE_VSSBACKUP"=dword:00000000
|
| 2. | Click Start , click
All Programs, click Accessories, click
Run, type regedit , and then click
OK. |
| 3. | On the File menu, click
Import. |
| 4. | Locate the file that you created in step 1, and then click
Open. The Registry
Editor dialog box appears. |
| 5. | Click OK. |
| 6. | On the File menu, click
Exit. |
Back to the top
Performance effect
By default, tracing functionality is disabled in Windows Vista.
Therefore, no performance effect exists on a regular installation.
You should not enable tracing functionality on production computers unless a Microsoft Customer Support Professional indicates that the tracing information is required to diagnose a problem. Tracing may affect computer performance. First you must find the problem, and you must resolve it. Then, immediately disable the tracing functionality.
Back to the top
Cluster configuration
For cluster installations, make sure that all registry entries on
all the nodes contain these registry entries. For any node that does not have
these registry entries, the cluster code ignores the registry entries in
the shared registry because the registry entries do not exist in the local
computer registry.
Back to the top