我用asp.net 调用 控制台程序 ,我在控制台里设了个断点,在调试asp.net 时 希望可以跟进到 控制台里的断点,该怎么弄啊 调用控制台
   
 try
        {
         
            string filename = "E:\\" + DateTime.Now.ToString("yyyyMMddHmmss") + ".jpg";
             Bitmap bmp;
            Process pro = new Process();
             pro.StartInfo.CreateNoWindow = true;
            pro.StartInfo.UseShellExecute = false;
            pro.StartInfo.RedirectStandardOutput = true;
            pro.StartInfo.FileName = @"D:\技术\控制台\\sdf\bin\Debug\sdfsd.exe";
             pro.StartInfo.Arguments =""+RealUrl+"  "+Addr+"";
              pro.Start();
              string Iscom = pro.StandardOutput.ReadToEnd();
            //    Response.Write(sf);
            Iscomploed = Convert.ToInt32(Iscom);
        
            Response.Write(Iscom);
        
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }
   
控制台程序 
  
  static void Main(string[] args)
        {
            int IsComploeted = 1;
           string filename = args[1].Trim().ToString();
            string url = args[0].Trim().ToString();
             Bitmap bmp = null;            try
            {
                  bmp = Okpower.Utility.WebPreview.GetWebPreview(new Uri(url), 0x493e0, 800, 600, true);
          
            }
            catch (Exception e)
            {
           IsComploeted = 0;
           Console.WriteLine(e.Message);
           }
            try
            {
                bmp.Save(filename);
            }
            
            catch(Exception  ee)
            {
                Console.WriteLine(ee.Message);
   
            }
  

解决方案 »

  1.   

    这样是很难断点调试的,因为Process.Start()是新开了个操作系统进程,很难有机会关联上。等你关联上,进程很可能已经执行完了。
    可能的解决办法:
    1.利用在控制台程序里写日志的方法来调试2.在控制台程序要调试的语句前加一句Console.Readline();也就是让程序停下来,等待用户输入后再继续,这样你可以有机会将程序关联上进程,实现单步调试。具体做法是,先将程序编译好,然后运行编译好的程序(不是在visual studio里直接调试代码),当执行到Console.Readline();停下来时,在visual studio里选择调试--关联进程,然后在列表里找到控制台程序的进程,应该就可以单步调试了。
      

  2.   

    好像不是这样的,控制台程序是我要在asp.net 里 跟进的进程,sdfsd.exe 就是控制台程序,我按照你的说法,在弹出控制端后,将该控制台程序附加到了 vs的进程, 也就是运行asp.net的进程 webdev.webserver.exe,那么然后该怎么办呢。
      

  3.   

    经调试,应该这样做:
    1.
    先在你的代码里,暂时把这句:
    pro.StartInfo.CreateNoWindow = true;
    修改成:
    pro.StartInfo.CreateNoWindow = false;2.
    暂时注释掉这3句:
                  string Iscom = pro.StandardOutput.ReadToEnd();
                Iscomploed = Convert.ToInt32(Iscom);
            
                Response.Write(Iscom);3.把这句
               int IsComploeted = 1;
    设上断点,在它之前加一句:
    Console.Readline();3.然后编译你的程序4.运行编译后的程序(不是在visual studio里调试)5.然后在Visual Studio里选 调试---关联进程,找到sdfsd.exe,确定6.现在应该有个DOS窗口打开了,到那个窗口,按任意键7.现在应该跳到前面设好的断点以上调试通过
      

  4.   

    漏了一点,这几句也要暂时修改一下:
                pro.StartInfo.UseShellExecute = true;
                pro.StartInfo.RedirectStandardOutput = false;或者这三句都暂时注释掉:             pro.StartInfo.CreateNoWindow = true;
                pro.StartInfo.UseShellExecute = false;
                pro.StartInfo.RedirectStandardOutput = true;