VCSamples/VC2010Samples/Fusion/traceman at master · zhkLearn/VCSamples · GitHub
Skip to content

Latest commit

 

History

History
 
 

Folders and files

<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=unicode">
<title>TraceMan Sample</title>
</head>
<body>
<h1>TraceMan Sample</h1>

<h2>TraceMan is a tool which provides information about</h2>
<ul>

	<li><p>application dependent assemblies </p></li>
	<li><p>state of the assemblies in the native fusion cache in human readable form</p></li>
</ul>
<h2>TraceMan options/functionalities</h2>
<ul>

	<li><p>Traces application dependent assemblies</p></li>
	<li><p>Dumps information about assemblies from the native fusion cache(-dump)</p></li>
	<li><p>Prints diagnostic information depending on verbosity level(-v/-verbose)</p></li>
	<li><p>Filters output information(-f/-filter)</p></li>
	<li><p>Regular expressions are supported(-regex)</p></li>
	<li><p>Saves output data into file(-output)</p></li>
</ul>
<h2>How does TraceMan work?</h2>
<ul>
	<li><p>Read manifest</p>
		<ul>
			<li><p>If WinXP/2k3 prefer to read external then embedded</p></li>
			<li><p>If Vista prefer to read embedded then external one</p></li>
		</ul>
	</li>
	<li><p>Read configuration file if exists</p></li>
	<li><p>Get information about assemblies</p></li>
	<li><p>For all assemblies do</p></li>
	<li><p>Read configuration file</p></li>
	<li><p>Read policy if exists</p></li>
	<li><p>Check assembly</p></li>
</ul>

<h1>Building and Running the Sample</h1>

<h2>To build the sample</h2>
<ul>
	<li><p> Open the solution traceman.sln.</p></li>
	<li><p>From the <b>Build</b> menu, click <b>Build Solution</b>.</p></li>
</ul>

<h2>Tracing or dumping</h2>
<ul>
	<li><p>Default verbosity level is set to 2</p></li>
	<li><p>Tracing</p>
		<ul>
			<li><p>traceman &lt;app_name&gt;.exe</p></li>
			<li><p>Some examples:</p>
				<ul>
					<li><p>traceman –v:3 –f:*CRT*Debug* c:\app.exe</p></li>
					<li><p>traceman –v:1 c:\app.exe</p></li>
				</ul>
			</li>
		</ul>
	</li>
	<li><p>Dumping</p>
		<ul>
			<li><p>traceman –dump</p></li>
			<li><p>Some examples:</p>
				<ul>
					<li><p>traceman –dump –v:1</p></li>
					<li><p>traceman –dump –v:3 –f:*policy*MFC* -output:sxsdump.txt</p></li>						
				</ul>
			</li>
		</ul>
	</li>
</ul>

<h3>Filtering results</h3>
<ul>
	<li><p>Filter tries to match the result to following expressions</p>
		<ul><li><p>arch_assemblyName_token_version_lang</p></li></ul>
	</li>
	<li><p>How to filter policy</p></li>
	<li><p>Some examples:</p>
		<ul>
			<li><p>traceman.exe -f:*CRT* -dump</p></li>
			<li><p>traceman.exe -f:*MICROSOFT.VC?0*CRT* -dump</p></li>
			<li><p>traceman.exe -f:.*CRT.*|.*MFC.* -dump –regex</p></li>
			<li><p>traceman.exe -f:.*MICROSOFT\.VC[98]0.*CRT.* -dump –regex</p></li>
		</ul>
	<li>
		<p>Remember! Traceman provides only information about CRT, MFC, ATL and OpenMP 
			assemblies unless you change VC_LIBS_FILTER define in stdafx.h</p>
	</li>
</ul>


<h1>Sample Files</h1>

<p>The sample includes the following main files:</p>
<ul>
	<li><p>ApplicationManifestFragment.cpp, ApplicationManifestFragment.h — parsing Application Manifest</p></li>
	<li><p>AssemblyManifestFragment.cpp, AssemblyManifestFragment.h — parsing Assembly Manifest</p></li>
	<li><p>ConfigManifestFragment.cpp, ConfigManifestFragment.h — parsing Config Manifest</p></li>
	<li><p>ConsoleMessageLogger.cpp, ConsoleMessageLogger.h — formatting and logging data on console</p></li>
	<li><p>debug.h — basic debugging macros</p></li>
	<li><p>File.cpp, File.h — basic operations on files</p></li>
	<li><p>FileMessageLogger.cpp, FileMessageLogger.h — formatting and logging data in file</p></li>
	<li><p>ManifestFragment.cpp, ManifestFragment.h — base class implementation for all kinds of manifest fragments</p></li>
	<li><p>MessageLogger.cpp, MessageLogger.h — base class implementation for message loggers</p></li>
	<li><p>ParamParser.cpp, ParamParser.h — parsing input command line parameters</p></li>
	<li><p>PublisherManifestFragment.cpp, PublisherManifestFragment.h — parsing Publisher Manifest</p></li>
	<li><p>traceman.cpp, traceman.h — main application logic</p></li>
	<li><p>Version.cpp, Version.h — class that handle operations on version data</p></li>
	<li><p>XMLReader.cpp, XMLReader.h — wrapper to xmllite library</p></li>
</ul>


<h1>Keywords</h1>
<p>This sample uses the following keywords:</p>
<p>Systrace.exe; dependency walker; Event Viewer; manifestview.exe; CBS Logs; 
	mt.exe; std::wstring; std::tr1::shared_ptr; std::tr1::wregex; xmllite; std::tr1::regex_replace;
	std::tr1::regex_search; std::tr1::regex_match; std::tr1::wsmatch; std::wstring;
	std::vector; std::unique; std::list; std::sort;
</p>

<div>
	<p>© Microsoft Corporation. All rights reserved. Send <a href="mailto:DevDocs@microsoft.com?subject=Documentation%20Feedback%20:TraceMan%20Sample">comments</a>
		about this topic to Microsoft.
	</p>
</div>

</body>
</html>