使用mono的Linux上C#代码的CIL级调试器

使用mono的Linux上C#代码的CIL级调试器,c#,linux,debugging,mono,cil,C#,Linux,Debugging,Mono,Cil,我用mono在Linux上编译了以下C#代码, 我想单步执行它的CIL命令。明确地 我希望能够检查堆栈, 并查看从中推送和弹出的值 using System; namespace ARITH { class MUL { static void Main() { int i = 742; int j = 999; if (i*j == 15242) {

我用mono在Linux上编译了以下C#代码, 我想单步执行它的CIL命令。明确地 我希望能够检查堆栈, 并查看从中推送和弹出的值

using System;
namespace ARITH
{
    class MUL
    {
        static void Main() 
        {
            int i = 742;
            int j = 999;

            if (i*j == 15242)
            {
                Console.WriteLine("MMMM");
            }
        }
    }
}
如何在main中单步执行生成的CIL代码? 以下是主函数生成的CIL:

$ mcs main.cs
$ monodis main.exe > main.cil
$ sed -n '37,60p;61q' main.cil
    .method private static hidebysig 
           default void Main ()  cil managed 
    {
        // Method begins at RVA 0x2058
        .entrypoint
        // Code size 36 (0x24)
        .maxstack 2
        .locals init (
            int32   V_0,
            int32   V_1)
        IL_0000:  ldc.i4 742
        IL_0005:  stloc.0 
        IL_0006:  ldc.i4 999
        IL_000b:  stloc.1 
        IL_000c:  ldloc.0 
        IL_000d:  ldloc.1 
        IL_000e:  mul 
        IL_000f:  ldc.i4 15242
        IL_0014:  bne.un IL_0023

        IL_0019:  ldstr "MMMM"
        IL_001e:  call void class [mscorlib]System.Console::WriteLine(string)
        IL_0023:  ret 
    } // end of method MUL::Main
编辑:

sudo apt install sdb
之后,我准备了一个简单的脚本来确保 我得到了正确的命令,实际上下面的脚本为局部变量
I
j
打印了正确的值:

$ cat sdbCommands.txt
bp add func ARITH.MUL.Main
r main.exe
step
step
step
step
print i
print j
$ sdb -f sdbCommands.txt

然而,我仍然找不到gdb的
stepi
的等价物。也就是说,要进入CIL级别…

在Windows上有很多选项(deblector、Reflector Pro、WindG/Sos等),但在Linux上最接近的选项是Mono的软调试器,否则通过GDB/LLDB进行本机调试。@sushingover您能为使用Mono的软调试器写一个简短的回答吗?还是gdb?&这里-
mono--debug program.exe
还有SDB客户端-。