Cobra runs on top of .NET and Mono. Also it generates the same kinds of classes, methods and statements that C# and VB use, so you can leverage tools like debuggers and profilers. Debugging programs include: * DbgCLR.exe * Mdbg.exe * Cordbg.exe This blog post gives some useful information on debugging .NET programs sans Visual Studio: * http://blog.slickedit.com/2007/11/c-with-slickedit-no-visual-studio-required/ You might also [wiki:DebuggingWithAnIDE use an IDE] on your executable such as VisualStudio, MonoDevelop or SharpDevelop. == Sample debugging session using Mdbg == For this example, we're going to use '''Mdbg.exe''' which comes with [http://www.microsoft.com/downloads/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&displaylang=en the Windows SDK]. To start debugging, make sure your Cobra sources are compiled with the '''-d''' switch: {{{ cobra.exe -d -compile d.cobra }}} For this example, let's assume '''d.cobra''' contains this: {{{ #!python sig SampleMethod(b as int) as int class A def main is shared a as SampleMethod = do(b as int) if b > 20 return b+5 return b+6 print a(21) print a(10) }}} After the command finished, you have an exe created. Fire up Mdbg like this: {{{ Mdbg.exe d.exe }}} You'll see output like this: {{{ run d.exe STOP: Breakpoint Hit 4: def main is shared }}} To start stepping through code, write '''next''' ( '''n''' has the same effect ). You'll see the debugger advance: {{{ [p#:0, t#:0] mdbg> next 5: a as SampleMethod = do(b as int) }}} Let's keep stepping until we reach the {{{ print a(21) }}} line: {{{ [p#:0, t#:0] mdbg> n 5: a as SampleMethod = do(b as int) [p#:0, t#:0] mdbg> n 9: print a(21) }}} If you want to step in that method and see what happens, press '''s'''. At any time, you can see the value of the variables by writing: {{{ #!cobra print variable_name }}} and that will write the value of '''variable_name'''. Similar, you can just type '''print''' and that will write the value of all the variables in that context. If at any time you want to quit debugging, just write '''exit'''. This example only covers the basics. For more information, [http://www.google.com/search?hl=en&q=mdbg.exe search the web]. See also: DebuggingTopics