The <a href="http://box.net">box.net</a> file is my project to create the 2 addins required to enable debugging an embedded application using MD 2.2RC and Mono 2.6RC.  <div><br></div><div>IMPORTANT:  For some reason only right clicking in the Solution explorer and selecting Debug Item works.  I did not even attempt to investigate this.  In other words the menu items Run | Debug and Run | Run do not work.  And right clicking in the solution explorer and selecting Run Item does not work either.<div>
<br></div><div><a href="http://www.box.net/shared/lskor4zxgc">http://www.box.net/shared/lskor4zxgc</a></div><div><br></div><div>You must edit EmbeddedSoftDebuggerSession.cs and change this line:</div><div>var psi = new ProcessStartInfo (&quot;open&quot;, &quot;&lt;full path to your&gt;.app&quot;)<br>
<br></div><div>Then build both projects.  Then from the command line go into the repos directory and type:</div><div>./clean</div><div>./docopy</div><div><br></div><div>This will create a MD addin repository in the directory three.</div>
<div><br></div><div>Then go to MD and click Tools | Addin Manager.  Click Repositories.  Click Add.  Check Register a local repository.  Select the directory three.  Click Install Addins.  At this point you should have two options.  Debugging and Embedded.  Install both.  Restart MD.</div>
<div><br></div><div>Create a new project and select EmbeddedProject.  You can change this to be a DLL or EXE based on how you are embedding.  </div><div><br></div><div>You can modify an existing project (at least this worked for me) to be an EmbeddedProject by editing the csproj file directly.  Add this line after the &lt;ProjectGuid&gt; entry:</div>
<div>    &lt;ProjectTypeGuids&gt;{84408980-E7F5-11DE-B313-B87456D89593};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}&lt;/ProjectTypeGuids&gt;</div><div><br></div><div>Best of luck!</div><div>Duane</div><div><br><div class="gmail_quote">
On Mon, Dec 14, 2009 at 8:55 AM, ptr <span dir="ltr">&lt;<a href="mailto:ptrajkumar@gmail.com">ptrajkumar@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br><br><div class="gmail_quote"><div><div></div><div class="h5">On Sat, Dec 12, 2009 at 11:55 AM, Duane Wandless <span dir="ltr">&lt;<a href="mailto:duane@wandless.net" target="_blank">duane@wandless.net</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Here is my create process code.  Is this the code in question?  <div><br></div><div>                        Process browser;</div><div><div><span style="white-space:pre">                        </span>var psi = new ProcessStartInfo (&quot;open&quot;, &quot;/Users/me/Src/sandbox/nov05/svn/working/PFiles/build/Debug/PFiles.app&quot;) {</div>


<div><span style="white-space:pre">                                </span>UseShellExecute = false,</div><div><span style="white-space:pre">                                </span>RedirectStandardOutput = false,</div><div><span style="white-space:pre">                                </span>RedirectStandardError = true,</div>


<div><span style="white-space:pre">                        </span>};</div><div><span style="white-space:pre">                        </span>psi.EnvironmentVariables.Add (&quot;MOON_SOFT_DEBUG&quot;,</div><div><span style="white-space:pre">                                </span>string.Format (&quot;transport=dt_socket,address={0}:{1}&quot;, dsi.Address, dsi.DebugPort));</div>


<div><span style="white-space:pre">                        </span></div><div><span style="white-space:pre">                        </span>browser = Process.Start (psi);</div><div><span style="white-space:pre">                        </span>ConnectOutput (browser.StandardOutput, false);</div>


<div><span style="white-space:pre">                        </span>ConnectOutput (browser.StandardError, true);</div><div><br></div><div>I did modify the Waiting for debugger to connect message to print out both DebugPort and OutputPort.  OutputPort is zero.</div>


<div><br></div><div><div><span style="white-space:pre">                </span>protected override string GetListenMessage (RemoteDebuggerStartInfo dsi)</div><div><span style="white-space:pre">                </span>{</div>
<div><span style="white-space:pre">                        </span>return string.Format(&quot;Waiting for debugger to connect at {0}:dbg{1}:con{2}&quot;, dsi.Address, dsi.DebugPort, dsi.OutputPort);</div><div><span style="white-space:pre">                </span>}</div>


<div><br></div></div>Thanks,</div><div>Duane</div><div><div></div><div><div><br><div class="gmail_quote">On Sat, Dec 12, 2009 at 11:12 AM, Geoff Norton <span dir="ltr">&lt;<a href="mailto:gnorton@novell.com" target="_blank">gnorton@novell.com</a>&gt;</span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Duane,<div><br></div><div>  How are you initializing the remove debug agent?  It sounds like you&#39;re listening for a console connection as well, but not connecting to that port.</div>


<div><br></div><div>-g</div><div><br></div><div><div><div><div></div><div><div>On 2009-12-12, at 10:49 AM, Duane Wandless wrote:</div><br></div></div><blockquote type="cite"><div><div></div><div><div>
I&#39;m finally very close to enabling the soft debugger for embedded OSX applications.  Any help would be greatly appreciated.  I am blocked on the MD debugger not responding to the remote app.  Is this issue related to the debugger needing to be signed or something similar? </div>



<div><br></div><div>I now can invoke the debugger and have it launch my cocoa app.  I see the Waiting for debugger to connect message.  And in the console I see these 2 lines and no other errors:</div><div><br></div><div>



12/12/09 9:44:04 AM<span style="white-space:pre">        </span>Firewall[72]<span style="white-space:pre">        </span>mono is listening from <a href="http://127.0.0.1:10001/" target="_blank">127.0.0.1:10001</a> proto=6</div>
<div>12/12/09 9:44:04 AM<span style="white-space:pre">        </span>Firewall[72]<span style="white-space:pre">        </span>mono is listening from <a href="http://127.0.0.1:52690/" target="_blank">127.0.0.1:52690</a> proto=6</div>
<div><br></div><div>But the invoked app hangs with this call stack:</div><div><div>#0  0x97c056ca in recvfrom$NOCANCEL$UNIX2003 ()</div><div>#1  0x97c6fe99 in recv ()</div><div>#2  0x00a9e906 in transport_connect (host=0x150c440 &quot;127.0.0.1&quot;, port=10001) at debugger-agent.c:1003</div>



<div>#3  0x00a9e12d in finish_agent_init (on_startup=1) at debugger-agent.c:809</div><div>#4  0x00a9df90 in mono_debugger_agent_init () at debugger-agent.c:763</div><div>#5  0x009d6b20 in mini_init (filename=0x150c100 &quot;/Users/me/Src/sandbox/dec10/svn/my_files/PFiles/build/Debug/PFiles.app/Contents/Libraries/MacMonoClient.exe&quot;, runtime_version=0x0) at mini.c:5109</div>



<div>#6  0x00a5e59a in mono_jit_init (file=0x150c100 &quot;/Users/me/Src/sandbox/dec10/svn/my_files/PFiles/build/Debug/PFiles.app/Contents/Libraries/MacMonoClient.exe&quot;) at driver.c:1892</div><div>#7  0x0004fbf7 in InitMono (argc=1, argv=0xbffff644) at /Users/me/Src/sandbox/nov05/svn/InitMono/initmono.m:42</div>



<div><br></div><div>To get the call stack I launch a dummy app and then launch the real app from within xcode that attempts to connect.  And yes I did try launching the real app directly as well with:</div><div>var psi = new ProcessStartInfo (&quot;open&quot;, &quot;/Users/me/Src/sandbox/nov05/svn/working/PFiles/build/Debug/PFiles.app&quot;) </div>



<div><br></div><div>If I cancel in the MD debugger connecting window I get this immediately from the xcode app:</div><div>debugger-agent: DWP handshake failed.</div><div><br></div><div>I disabled the Firewall just in case with no change.  But since the cocoa app responds to the cancel from MD I believe the connection is sort of established.</div>



<div><br></div><div>Here is my init code:</div><div><div><span style="white-space:pre">        </span>MonoDomain *domain;</div><div><br></div><div><span style="white-space:pre">        </span>NSString *libraryPath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@&quot;Contents/Libraries&quot;];</div>



<div><span style="white-space:pre">        </span>NSString *sampleAssemblyPath = [libraryPath stringByAppendingPathComponent:@&quot;MacMonoClient.exe&quot;];</div><div><br></div><div><span style="white-space:pre">        </span>NSLog(@&quot;libraryPath: %@&quot;, sampleAssemblyPath);</div>



<div><br></div><div><span style="white-space:pre">        </span>mono_config_parse (&quot;config&quot;);</div><div><br></div><div>        NSLog(@&quot;about to check for MOON_SOFT_DEBUG&quot;);</div><div><span style="white-space:pre">        </span>const gchar *soft_debug;</div>



<div><span style="white-space:pre">        </span>soft_debug = g_getenv (&quot;MOON_SOFT_DEBUG&quot;);</div><div><span style="white-space:pre">        </span>if (soft_debug != NULL) {</div>
<div><span style="white-space:pre">                </span>NSLog(@&quot;we have MOON_SOFT_DEBUG %s&quot;, soft_debug);</div><div><span style="white-space:pre">                </span>gchar *opt = g_strdup_printf (&quot;--debugger-agent=%s&quot;, soft_debug);</div>



<div><span style="white-space:pre">                </span>mono_jit_parse_options (1, &amp;opt);</div><div><span style="white-space:pre">                </span>g_free (opt);</div><div><span style="white-space:pre">        </span>}</div>
<div><br></div><div><span style="white-space:pre">        </span>mono_debug_init (MONO_DEBUG_FORMAT_MONO);</div><div><br></div><div><span style="white-space:pre">        </span>domain = mono_jit_init ([sampleAssemblyPath UTF8String]);</div>



<div><br></div><div>Thanks,<br>Duane</div></div></div></div></div></blockquote></div></div></div></blockquote></div></div></div></div></blockquote><div><br></div><div><br></div></div></div><div>Hey Duane</div><div><br></div>
<div>    Did you get this to work on MAC, If so I was wondering if you like to share it with everybody ? There is hardly any documentation anywhere so I don&#39;t even know where to start ?</div>
<div><br></div><div><br></div><div>Thanks</div><div>Raj</div><div> </div></div><br>
</blockquote></div><br></div></div>