MSMQ helper tools

Three tools that will help you move MSMQ messages between computers: MessageDumper, MessagePeeker and MessagePusher. More information can be found on my blog: http://lowleveldesign.wordpress.com/2014/04/06/msmq-helper-tools/.

Inject plugin for MDbg

This MDbg plugin allows you to inject code into a debugged application. You simply create a .NET assembly (with Main method containg code you would like to execute within other process), call inject <your-assembly-path> inside your MDbg session and detach from the debuggee. More information can be found on my blog.

Process Governor

This application allows you to set a limit on a memory committed by a process. On Windows committed memory is actually all private memory that the process uses. I wrote this tool to test my .NET applications (including web applications) for memory leaks. With it I can check if under heavy load they won't throw OutOfMemoryException. For more information visit my blog: http://lowleveldesign.wordpress.com/2013/11/21/set-process-memory-limit-with-process-governor

Bazik

It's a web application that monitors SQL Server - some screenshots and information can be found on my blog: http://lowleveldesign.wordpress.com/2013/09/26/bazik-sql-server-monitoring-application.

ElmahLogViewer

It's a small web application that can show Elmah logs from different applications. It's a sample I described on my blog: http://lowleveldesign.wordpress.com/2013/03/24/elmah-axd-log-viewer-for-multiple-apps/. To access the exception list open the /elmah.axd?app=<your-app-name> .

Note: the sample viewer uses a MySql database. In order to connect it to a different error log store you will need to make some modifications in code. Please use the Discussions tab if you have any problems or questions.

FrontMan

It's a simple application that can be used to diagnose other processes start-up - it logs the process command line and copies all files which paths are found in call arguments. If installed it can intercept a given process globally, logging each of its call. More on this tool as well as an example usage to diagnose ASP.NET compilation can be found on my blog: http://lowleveldesign.wordpress.com/2013/01/25/diagnosing-aspnet-views-compilation. Usage:

frontman <app-to-start> [args]
frontman -install <app-image-name>
frontman -uninstall <app-image-name>

Musketeer service

It's a simple Windows Service that collects data from system performance counters and stores it in a MySql database. You may use it to monitor other processes (services) installed on your server as well as system components used by them (such as MSMQ etc.). To read more about how it works and how to install it correctly have a look at this post on my blog: http://lowleveldesign.wordpress.com/2012/10/21/introducing-musketeer-performance-counter-data-collector/.

To install the service:
  1. create the service MySql database by using musketeer-db.sql
  2. change the connection string in the Musketeer.exe.config to point to your newly created database
  3. install the service by running Musketeer.exe install
  4. start the service

AdoNetTraceReader

AdoNetTraceReader is a parser for etw events stored in a xml file. In an installation package you can also find .reg files needed to enable ADO.NET tracing in a registry and a providers file for the logman tracing. For a complete example how to diagnose ADO.NET problems you may read my blog post. Just to catch up those are steps required to collect and parse ADO.NET traces:
  1. setup (run only once):
    1. setup-ado.net4x64.reg or setup-ado.net4x86.reg
    2. mofcomp adonet in the framework directory (c:\Windows\Microsoft.NET\Framework64\v4.0.30319\)
  2. start trace collection: logman start adonettrace -pf .\ctrl.guid.adonet -o adonettrace.etl -ets
  3. stop trace collection after performing some data tasks: logman stop adonettrace -ets
  4. convert etl file to xml: tracerpt -of xml .\adonettrace.etl
  5. parse and filter (if necessary) the xml file: .\AdoNetTraceReader.exe -i dumpfile.xml -o parsed.txt -p 2008
  6. read logs and diagnose:)

Last edited Jun 18 at 7:53 PM by consept, version 18