如何启动exe文件cdb.exe并从process.start传递参数

时间:2016-06-01 07:23:43

标签: c# windbg

如果我手动执行以下操作,它可以正常工作但我必须能够从C#执行相同的操作,并且还能够关闭命令窗口。

  1. 打开命令窗口(cmd)
  2. 使用cd转到cdb.exe所在的目录 就我而言C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86
  3. 我做cdb -z D:\Temp\CrashDump.dmp -logo c:\temp\mydump.text -c "q"
  4. 现在mydump.text
  5. 中有一个c:\temp\

    所以我想从C#做同样的事情。我尝试了几种解决方案。这是第一个

    Process.Start(@"program files (x86)\windows Kits\8.1\Debuggers\x86\cdb.exe", @"-z D:\Temp\CrashDump.dmp -logo c:\temp\mydump.text -c \\""q\\""");
    

    执行时会出现错误"系统无法找到指定的文件。

    我的第二次尝试是

     Process.Start("cmd.exe", @"program files (x86)\windows Kits\8.1\Debuggers\x86\cdb.exe -z D:\Temp\CrashDump.dmp -logo c:\temp\mydump.text -c \\""q\\""");
    

    这会打开命令窗口,但不会创建文件mydump.text。

    我还尝试将命令添加到bat文件中,但它不起作用。

    创建文件mydump.text后,也应自动关闭命令窗口。

1 个答案:

答案 0 :(得分:1)

你可以试试这个

        using (var process = new System.Diagnostics.Process())
        {
            var startInfo = new System.Diagnostics.ProcessStartInfo();
            startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            startInfo.FileName = @"C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\cdb.exe";
            startInfo.Arguments = @"-z D:\Temp\CrashDump.dmp -logo c:\temp\mydump.text -c ""q""";
            process.StartInfo = startInfo;
            process.Start();    
        }