<?xml version="1.0" encoding="utf-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>mono-api-debug.html</title>
    <style type="text/css">
    .mapi-docs {
	line-height: 1.5;
	padding-left: 2em;
	padding-right: 2em;
    }
    .mapi-docs p {
	max-width: 60em;
    }
    .mapi-docs .mapi-body {
	max-width: 60em;
    }
    .mapi-docs code {
        border: 1px solid rgba(214,214,214,1);
	background-color: rgba(249,249,249,1);
	padding: 0.1em 0.5em;
    }
    .mapi-description code {
        font-family: "Consolas", "Courier", monospace;
        border: 1px solid rgba(214,214,214,1);
	background-color: rgba(249,249,249,1);
	padding: 0.1em 0.2em;
    }

    .mapi-header {
        padding: 0 0 5pt 5pt;
        margin: 10pt;
        white-space: pre;
        font-family: monospace;
        border: 1px solid rgba(233,233,233,1);
	background-color: rgba(249,249,249,1);
    }

    .mapi-code {
        padding: 5pt 5pt;
        margin: 10pt;
        white-space: pre;
        font-family: monospace;
        border: 1px solid rgba(233,233,233,1);
	background-color: rgba(249,249,249,1);
    }

    .mapi-code:first-line {
        line-height: 0px;
    }

    .mapi-entry code {
        border: none;
        background-color: transparent;
    }
    
    .mapi-parameters {
        border-collapse: collapse;
        border-spacing: 0;
        empty-cells: hide;
        border: 0;
        margin: 5px 0 26px;	    
    }

    .mapi-parameters td {
        border: 1px solid rgba(214,214,214,1);
	  border-left-style: none;
	padding: 5px 25px 5px 10px;
    }

    .mapi-parameters tr>td:last-child  {
        border-right: 0;
    }
	
    .mapi-parameters td:first-of-type {
        text-align: right;
        padding: 7px;
        vertical-align: top;
        word-break: normal;
        width: 40px;
    }

    .mapi-parameters tr:last-child>td {
        border-bottom: 0;
    }

    .mapi-parameters tr:first-child>td {
        border-top: 0;
    }

    .mapi-parameters tr td:first-of-type {
        text-align: right;
        padding: 7px;
        vertical-align: top;
        word-break: normal;
        width: 40px;
    }

   .mapi {
        left: -25px;
        margin: 0;
        padding: 13px 25px 0;
        position: relative;
        width: 100%;
    } 

    .mapi-description {
        background: rgba(249,249,249,1);
        border-bottom: 1px solid rgba(233,233,233,1);
        left: -25px;
        margin: 0;
        padding: 13px 25px 0;
        position: relative;
        width: 100%;	 
    }

     .mapi-entry {
         background: transparent;
     }

     .mapi-docs {
     }
	
     .mapi-prototype {
         border-left: 5px solid rgba(205,233,244,1);
         padding: .5em;
         margin-top: 5pt;
         margin-bottom: 5pt;
         font-family: "Consolas", "Courier", monospace;
         display: block;
         overflow: auto;
         background-color: #f9f9f9;
    } 

    .mapi-declaration {
	margin-top: 21px;
    }

    .mapi-section {
        font-size: smaller;
	font-weight: bold;
	margin-top: 21px;
	line-height: 1.5;
    }
	
    .mapi-strike {
        text-decoration: line-through;
    }

    .mapi-deprecated {
        color: red;
    }

    .mapi-ptr-container {
        background: white;
	border-bottom: 1px solid rgba(233,233,233,1);
        left: -25px;
        padding-left: 25px;
        padding-right: 25px;
        padding-bottom: 13px;
        position: relative;
        width: 100%;
    }

    .mapi-ptr {
        background: rgba(249,249,249,1);
	border-left: 1px solid rgba(233,233,233,1);
	border-top: 1px solid rgba(233,233,233,1);
        height: 12px;
        left: 37px;
        top: -7px;
        -webkit-transform: rotate(45deg);
        -moz-transform: rotate(45deg);
        -o-transform: rotate(45deg);
        transform: rotate(45deg);
        position: absolute;
        width: 12px;
    }

    .mapi-height-container {
        left: -25px;
        padding: 0 25px;
        position: relative;
        width: 100%;
    }
	
</style>
</head>
<body>
<div class="mapi-docs">

<h3>Mono Debugger Interface</h3>

	<p />These are methods that are invoked by the debugger at
	runtime.
	
<a name="api:mono_debugger_insert_breakpoint"></a>
<div class="mapi">
    <div class="mapi-entry "><code>mono_debugger_insert_breakpoint</code></div>
    <div class="mapi-height-container">
        <div class="mapi-ptr-container"></div>
        <div class="mapi-description">
            <div class="mapi-ptr"></div>

            <div class="mapi-declaration mapi-section">Syntax</div>
            <div class="mapi-prototype">mono_debugger_insert_breakpoint</div>
            <p />
        </div><!--mapi-description -->
    </div><!--height container -->
</div> <!-- class=mapi  -->

<a name="api:mono_debugger_method_has_breakpoint"></a>
<div class="mapi">
    <div class="mapi-entry "><code>mono_debugger_method_has_breakpoint</code></div>
    <div class="mapi-height-container">
        <div class="mapi-ptr-container"></div>
        <div class="mapi-description">
            <div class="mapi-ptr"></div>

            <div class="mapi-declaration mapi-section">Syntax</div>
            <div class="mapi-prototype">mono_debugger_method_has_breakpoint</div>
            <p />
        </div><!--mapi-description -->
    </div><!--height container -->

<h3>Debugging Symbols</h3>
</div> <!-- class=mapi  -->

<a name="api:mono_debug_open_mono_symbols"></a>
<div class="mapi">
    <div class="mapi-entry "><code>mono_debug_open_mono_symbols</code></div>
    <div class="mapi-height-container">
        <div class="mapi-ptr-container"></div>
        <div class="mapi-description">
            <div class="mapi-ptr"></div>

            <div class="mapi-declaration mapi-section">Syntax</div>
            <div class="mapi-prototype">MonoSymbolFile*
mono_debug_open_mono_symbols (MonoDebugHandle *handle, const uint8_t *raw_contents,
			      int size, gboolean in_the_debugger)

</div>
            <p />
        </div><!--mapi-description -->
    </div><!--height container -->
</div> <!-- class=mapi  -->

<a name="api:mono_debug_symfile_free_location"></a>
<div class="mapi">
    <div class="mapi-entry "><code>mono_debug_symfile_free_location</code></div>
    <div class="mapi-height-container">
        <div class="mapi-ptr-container"></div>
        <div class="mapi-description">
            <div class="mapi-ptr"></div>

            <div class="mapi-declaration mapi-section">Syntax</div>
            <div class="mapi-prototype">void
mono_debug_symfile_free_location (MonoDebugSourceLocation  *location)

</div>
            <p />
             <div class="mapi-section">Description</div>
             <div> 	<p /> 	 Free a <code>MonoDebugSourceLocation</code> returned by 	 <code>mono_debug_symfile_lookup_location</code></div>
        </div><!--mapi-description -->
    </div><!--height container -->
</div> <!-- class=mapi  -->

<a name="api:mono_debug_symfile_is_loaded"></a>
<div class="mapi">
    <div class="mapi-entry "><code>mono_debug_symfile_is_loaded</code></div>
    <div class="mapi-height-container">
        <div class="mapi-ptr-container"></div>
        <div class="mapi-description">
            <div class="mapi-ptr"></div>

            <div class="mapi-declaration mapi-section">Syntax</div>
            <div class="mapi-prototype">mono_bool
mono_debug_symfile_is_loaded (MonoSymbolFile *symfile)

</div>
            <p />
        </div><!--mapi-description -->
    </div><!--height container -->
</div> <!-- class=mapi  -->

<a name="api:mono_debug_symfile_lookup_locals"></a>
<div class="mapi">
    <div class="mapi-entry "><code>mono_debug_symfile_lookup_locals</code></div>
    <div class="mapi-height-container">
        <div class="mapi-ptr-container"></div>
        <div class="mapi-description">
            <div class="mapi-ptr"></div>

            <div class="mapi-declaration mapi-section">Syntax</div>
            <div class="mapi-prototype">MonoDebugLocalsInfo*
mono_debug_symfile_lookup_locals (MonoDebugMethodInfo *minfo)

</div>
            <p />
             <div class="mapi-section">Description</div>
             <div> 	<p /> 	 Return information about the local variables of <i>minfo</i> from the symbol file. 	 Return <code>NULL</code> if no information can be found. 	 The result should be freed using <code>mono_debug_symfile_free_locals</code>.</div>
        </div><!--mapi-description -->
    </div><!--height container -->
</div> <!-- class=mapi  -->

<a name="api:mono_debug_symfile_lookup_location"></a>
<div class="mapi">
    <div class="mapi-entry "><code>mono_debug_symfile_lookup_location</code></div>
    <div class="mapi-height-container">
        <div class="mapi-ptr-container"></div>
        <div class="mapi-description">
            <div class="mapi-ptr"></div>

            <div class="mapi-declaration mapi-section">Syntax</div>
            <div class="mapi-prototype">MonoDebugSourceLocation*
mono_debug_symfile_lookup_location (MonoDebugMethodInfo *minfo, uint32_t offset)

</div>
            <p />
            <div class="mapi-section">Parameters</div>
            <table class="mapi-parameters"><tbody><tr><td><i>minfo</i></td><td> A <code>MonoDebugMethodInfo</code> which can be retrieved by <code>mono_debug_lookup_method</code>.</td></tr><tr><td><i>offset</i></td><td> IL offset within the corresponding method's CIL code.</td></tr></tbody></table>             <div class="mapi-section">Description</div>
             <div> 	<p /> 	 This function is similar to <code>mono_debug_lookup_location</code>, but we 	 already looked up the method and also already did the 	 native address -&gt; IL offset mapping.</div>
        </div><!--mapi-description -->
    </div><!--height container -->
</div> <!-- class=mapi  -->

<a name="api:mono_debug_symfile_lookup_method"></a>
<div class="mapi">
    <div class="mapi-entry "><code>mono_debug_symfile_lookup_method</code></div>
    <div class="mapi-height-container">
        <div class="mapi-ptr-container"></div>
        <div class="mapi-description">
            <div class="mapi-ptr"></div>

            <div class="mapi-declaration mapi-section">Syntax</div>
            <div class="mapi-prototype">MonoDebugMethodInfo*
mono_debug_symfile_lookup_method (MonoDebugHandle *handle, MonoMethod *method)

</div>
            <p />
        </div><!--mapi-description -->
    </div><!--height container -->

<h3>Internal Debugging </h3>

</div> <!-- class=mapi  -->

<a name="api:mono_debug_add_delegate_trampoline"></a>
<div class="mapi">
    <div class="mapi-entry "><code>mono_debug_add_delegate_trampoline</code></div>
    <div class="mapi-height-container">
        <div class="mapi-ptr-container"></div>
        <div class="mapi-description">
            <div class="mapi-ptr"></div>

            <div class="mapi-declaration mapi-section">Syntax</div>
            <div class="mapi-prototype">void
mono_debug_add_delegate_trampoline (gpointer code, int size)

</div>
            <p />
        </div><!--mapi-description -->
    </div><!--height container -->
</div> <!-- class=mapi  -->

<a name="api:mono_debug_close_image"></a>
<div class="mapi">
    <div class="mapi-entry "><code>mono_debug_close_image</code></div>
    <div class="mapi-height-container">
        <div class="mapi-ptr-container"></div>
        <div class="mapi-description">
            <div class="mapi-ptr"></div>

            <div class="mapi-declaration mapi-section">Syntax</div>
            <div class="mapi-prototype">void
mono_debug_close_image (MonoImage *image)

</div>
            <p />
        </div><!--mapi-description -->
    </div><!--height container -->
</div> <!-- class=mapi  -->

<a name="api:mono_debug_domain_create"></a>
<div class="mapi">
    <div class="mapi-entry "><code>mono_debug_domain_create</code></div>
    <div class="mapi-height-container">
        <div class="mapi-ptr-container"></div>
        <div class="mapi-description">
            <div class="mapi-ptr"></div>

            <div class="mapi-declaration mapi-section">Syntax</div>
            <div class="mapi-prototype">void
mono_debug_domain_create (MonoDomain *domain)

</div>
            <p />
        </div><!--mapi-description -->
    </div><!--height container -->
</div> <!-- class=mapi  -->

<a name="api:mono_debug_domain_unload"></a>
<div class="mapi">
    <div class="mapi-entry "><code>mono_debug_domain_unload</code></div>
    <div class="mapi-height-container">
        <div class="mapi-ptr-container"></div>
        <div class="mapi-description">
            <div class="mapi-ptr"></div>

            <div class="mapi-declaration mapi-section">Syntax</div>
            <div class="mapi-prototype">mono_debug_domain_unload</div>
            <p />
        </div><!--mapi-description -->
    </div><!--height container -->
</div> <!-- class=mapi  -->

<a name="api:mono_debug_enabled"></a>
<div class="mapi">
    <div class="mapi-entry "><code>mono_debug_enabled</code></div>
    <div class="mapi-height-container">
        <div class="mapi-ptr-container"></div>
        <div class="mapi-description">
            <div class="mapi-ptr"></div>

            <div class="mapi-declaration mapi-section">Syntax</div>
            <div class="mapi-prototype">mono_bool
mono_debug_enabled (void)

</div>
            <p />
             <div class="mapi-section">Description</div>
             <div> 	<p /> 	 Returns true is debug information is enabled. This doesn't relate if a debugger is present or not.</div>
        </div><!--mapi-description -->
    </div><!--height container -->
</div> <!-- class=mapi  -->

<a name="api:mono_debug_free_method_jit_info"></a>
<div class="mapi">
    <div class="mapi-entry "><code>mono_debug_free_method_jit_info</code></div>
    <div class="mapi-height-container">
        <div class="mapi-ptr-container"></div>
        <div class="mapi-description">
            <div class="mapi-ptr"></div>

            <div class="mapi-declaration mapi-section">Syntax</div>
            <div class="mapi-prototype">mono_debug_free_method_jit_info</div>
            <p />
        </div><!--mapi-description -->
    </div><!--height container -->
</div> <!-- class=mapi  -->

<a name="api:mono_debug_free_source_location"></a>
<div class="mapi">
    <div class="mapi-entry "><code>mono_debug_free_source_location</code></div>
    <div class="mapi-height-container">
        <div class="mapi-ptr-container"></div>
        <div class="mapi-description">
            <div class="mapi-ptr"></div>

            <div class="mapi-declaration mapi-section">Syntax</div>
            <div class="mapi-prototype">void
mono_debug_free_source_location (MonoDebugSourceLocation *location)

</div>
            <p />
            <div class="mapi-section">Parameters</div>
            <table class="mapi-parameters"><tbody><tr><td><i>location</i></td><td> A <code>MonoDebugSourceLocation</code></td></tr></tbody></table>             <div class="mapi-section">Description</div>
             <div> 	 Frees the <i>location</i>.</div>
        </div><!--mapi-description -->
    </div><!--height container -->
</div> <!-- class=mapi  -->

<a name="api:mono_debug_lookup_locals"></a>
<div class="mapi">
    <div class="mapi-entry "><code>mono_debug_lookup_locals</code></div>
    <div class="mapi-height-container">
        <div class="mapi-ptr-container"></div>
        <div class="mapi-description">
            <div class="mapi-ptr"></div>

            <div class="mapi-declaration mapi-section">Syntax</div>
            <div class="mapi-prototype">mono_debug_lookup_locals</div>
            <p />
        </div><!--mapi-description -->
    </div><!--height container -->
</div> <!-- class=mapi  -->

<a name="api:mono_debug_lookup_method"></a>
<div class="mapi">
    <div class="mapi-entry "><code>mono_debug_lookup_method</code></div>
    <div class="mapi-height-container">
        <div class="mapi-ptr-container"></div>
        <div class="mapi-description">
            <div class="mapi-ptr"></div>

            <div class="mapi-declaration mapi-section">Syntax</div>
            <div class="mapi-prototype">MonoDebugMethodInfo*
mono_debug_lookup_method (MonoMethod *method)

</div>
            <p />
             <div class="mapi-section">Description</div>
             <div> 	<p /> 	 Lookup symbol file information for the method <i>method</i>.  The returned 	 <code>MonoDebugMethodInfo</code> is a private structure, but it can be passed to 	 <code>mono_debug_symfile_lookup_location</code>.</div>
        </div><!--mapi-description -->
    </div><!--height container -->
</div> <!-- class=mapi  -->

<a name="api:mono_debug_lookup_method_addresses"></a>
<div class="mapi">
    <div class="mapi-entry "><code>mono_debug_lookup_method_addresses</code></div>
    <div class="mapi-height-container">
        <div class="mapi-ptr-container"></div>
        <div class="mapi-description">
            <div class="mapi-ptr"></div>

            <div class="mapi-declaration mapi-section">Syntax</div>
            <div class="mapi-prototype">mono_debug_lookup_method_addresses</div>
            <p />
        </div><!--mapi-description -->
    </div><!--height container -->
</div> <!-- class=mapi  -->

<a name="api:mono_debug_lookup_source_location"></a>
<div class="mapi">
    <div class="mapi-entry "><code>mono_debug_lookup_source_location</code></div>
    <div class="mapi-height-container">
        <div class="mapi-ptr-container"></div>
        <div class="mapi-description">
            <div class="mapi-ptr"></div>

            <div class="mapi-declaration mapi-section">Syntax</div>
            <div class="mapi-prototype">MonoDebugSourceLocation*
mono_debug_lookup_source_location (MonoMethod *method, guint32 address, MonoDomain *domain)

</div>
            <p />
            <div class="mapi-section">Parameters</div>
            <table class="mapi-parameters"><tbody><tr><td><i>address</i></td><td> Native offset within the <i>method</i>'s machine code.</td></tr></tbody></table>             <div class="mapi-section">Description</div>
             <div> 	 Lookup the source code corresponding to the machine instruction located at 	 native offset <i>address</i> within <i>method</i>. 	 The returned <code>MonoDebugSourceLocation</code> contains both file / line number 	 information and the corresponding IL offset.  It must be freed by 	 <code>mono_debug_free_source_location</code>.</div>
        </div><!--mapi-description -->
    </div><!--height container -->
</div> <!-- class=mapi  -->

<a name="api:mono_debug_open_image_from_memory"></a>
<div class="mapi">
    <div class="mapi-entry "><code>mono_debug_open_image_from_memory</code></div>
    <div class="mapi-height-container">
        <div class="mapi-ptr-container"></div>
        <div class="mapi-description">
            <div class="mapi-ptr"></div>

            <div class="mapi-declaration mapi-section">Syntax</div>
            <div class="mapi-prototype">mono_debug_open_image_from_memory</div>
            <p />
        </div><!--mapi-description -->
    </div><!--height container -->
</div> <!-- class=mapi  -->

<a name="api:mono_debug_print_stack_frame"></a>
<div class="mapi">
    <div class="mapi-entry "><code>mono_debug_print_stack_frame</code></div>
    <div class="mapi-height-container">
        <div class="mapi-ptr-container"></div>
        <div class="mapi-description">
            <div class="mapi-ptr"></div>

            <div class="mapi-declaration mapi-section">Syntax</div>
            <div class="mapi-prototype">gchar*
mono_debug_print_stack_frame (MonoMethod *method, guint32 native_offset, MonoDomain *domain)

</div>
            <p />
            <div class="mapi-section">Parameters</div>
            <table class="mapi-parameters"><tbody><tr><td><i>native_offset</i></td><td> Native offset within the <i>method</i>'s machine code.</td></tr></tbody></table>             <div class="mapi-section">Description</div>
             <div> 	 Conventient wrapper around <code>mono_debug_lookup_source_location</code> which can be 	 used if you only want to use the location to print a stack frame.</div>
        </div><!--mapi-description -->
    </div><!--height container -->
</div> <!-- class=mapi  -->

<a name="api:mono_debug_remove_method"></a>
<div class="mapi">
    <div class="mapi-entry "><code>mono_debug_remove_method</code></div>
    <div class="mapi-height-container">
        <div class="mapi-ptr-container"></div>
        <div class="mapi-description">
            <div class="mapi-ptr"></div>

            <div class="mapi-declaration mapi-section">Syntax</div>
            <div class="mapi-prototype">mono_debug_remove_method</div>
            <p />
        </div><!--mapi-description -->
    </div><!--height container -->
</div> <!-- class=mapi  -->

<a name="api:mono_debug_il_offset_from_address"></a>
<div class="mapi">
    <div class="mapi-entry "><code>mono_debug_il_offset_from_address</code></div>
    <div class="mapi-height-container">
        <div class="mapi-ptr-container"></div>
        <div class="mapi-description">
            <div class="mapi-ptr"></div>

            <div class="mapi-declaration mapi-section">Syntax</div>
            <div class="mapi-prototype">gint32
mono_debug_il_offset_from_address (MonoMethod *method, MonoDomain *domain, guint32 native_offset)

</div>
            <p />
             <div class="mapi-section">Description</div>
             <div> 	<p /> 	 Compute the IL offset corresponding to <i>native_offset</i> inside the native 	 code of <i>method</i> in <i>domain</i>.</div>
        </div><!--mapi-description -->
    </div><!--height container -->
</div> <!-- class=mapi  -->

<a name="api:mono_debug_add_method"></a>
<div class="mapi">
    <div class="mapi-entry "><code>mono_debug_add_method</code></div>
    <div class="mapi-height-container">
        <div class="mapi-ptr-container"></div>
        <div class="mapi-description">
            <div class="mapi-ptr"></div>

            <div class="mapi-declaration mapi-section">Syntax</div>
            <div class="mapi-prototype">MonoDebugMethodAddress*
mono_debug_add_method (MonoMethod *method, MonoDebugMethodJitInfo *jit, MonoDomain *domain)

</div>
            <p />
        </div><!--mapi-description -->
    </div><!--height container -->
</div> <!-- class=mapi  -->

<a name="api:mono_debug_close_mono_symbol_file"></a>
<div class="mapi">
    <div class="mapi-entry "><code>mono_debug_close_mono_symbol_file</code></div>
    <div class="mapi-height-container">
        <div class="mapi-ptr-container"></div>
        <div class="mapi-description">
            <div class="mapi-ptr"></div>

            <div class="mapi-declaration mapi-section">Syntax</div>
            <div class="mapi-prototype">void
mono_debug_close_mono_symbol_file (MonoSymbolFile *symfile)

</div>
            <p />
        </div><!--mapi-description -->
    </div><!--height container -->