none
Como depurar por partes RRS feed

  • Pregunta

  • Estoy haciendo mi primer programa con Microsoft Visual c# 2010 express y tenía entendido que se puede depurar poco a poco para ir viendo lo que funciona y lo que no.

    He marcado un punto de interrupción en el formulario y depuro "paso a paso por instrucciones" y no me para, me hace la misma depuración que si no pongo punto de interrupción.

    ¿Que estoy haciendo mal?

    Gracias

    jueves, 10 de enero de 2013 17:04

Respuestas

  • Marco el punto de interrupcion, depuro con F11 y no se para, es decir, que tengo 8 excepciones, las mismas que cuando depuro todo del tirón.

    pero el depurar no corrige los errores magicamente, o sea ir con F11 o con F10 permite que inspecciones variables y veas que camino toma el codigo, pero debes tu solucionar los problemas

    es mas que seguro que tendras los mismo errores, que suceda es correcto

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 10 de enero de 2013 17:44
  • Me da la excepcion: Error    1    El operador '<' no se puede aplicar a operandos del tipo 'int' y 'grupo de métodos'   

    eso lo marca en la linea

                for (Int32 i = inicio; i < oLibreta.Count; i++) 

    porque quizas debas usar el Length para saber la cantidad de items del array


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 10 de enero de 2013 17:46

Todas las respuestas

  • no entendi, como que hace la misma depuracion?

    o sea el punto de interupcion defin un lugar en el codigo donde este se detiene, despues moverte con F10 o F11 es igual en cualqueir caso

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 10 de enero de 2013 17:08
  • Hola.

    El Breakpoint

    Saludos.


    Cristian Torres
    Blog Cristian Torres

    El Salvador - San Salvador

    jueves, 10 de enero de 2013 17:17

  • Intento explicarme mejor,

    tengo todo este codigo escrito:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;  //añadido por mi
    
    namespace LeerLongi
    {
        public partial class frmLeerLongi : Form
        {
            cLibretaPto oLibreta = new cLibretaPto();  //Esto es un operador, crea el objeto Libreta de la clase LeerPuntos
         
            public frmLeerLongi()
            {
                InitializeComponent();
            }
    
            private void SelArchivo_Click(object sender, EventArgs e) //METODO PARA IMPORTAR OBSERVACIONES DESDE UN ASCII
            {
                OpenFileDialog openFileDialog = new OpenFileDialog();   //para abrir un fichero cuando le doy click en la ventana
    
                openFileDialog.Filter = "Archivos txt|*.txt|Archivos bin|*.bin";  //las extensiones de fichero que puedo abrir  
                openFileDialog.InitialDirectory = "c:/";
    
    
                if (openFileDialog.ShowDialog(this) == DialogResult.OK)   //esto hay q ponerlo,   test result
                {
                    string FileName = openFileDialog.FileName;  //para seleccionar el nombre del fichero
    
                    oLibreta.Read(FileName, TipoFichero.asc);  //llamada al método READ de la clase cLeerPuntos 
                    this.EscribeTabla(oLibreta);  //llamada al metodo ESCRIBE_TABLA 
                }
    
            }   
    
    
            private void EscribeTabla(cLibretaPto oLib)  //metodo para escribir en el Data Grid y con argumento de entrada oLib  DUDAAAAA
            {                                          //¿CREA EL OBJETO oLIB DE LA CLASE cLEERPUNTOS?????
                // throw new NotImplementedException();
    
    
                this.dataGridView1.Visible = true;
                this.dataGridView1.RowCount = oLib.Cantidad;   //num de filas de la tabla
    
                for (Int32 inti = 0; inti <= (oLib.Cantidad - 1); inti++)  //FOR: ejecuta algo repetidamente
                //mientras que inti sea menor o igual que cantidad menos 1 se ejecuta
                {
                    this.dataGridView1.Rows[inti].Cells[0].Value = oLib[inti].Id.ToString("000.0000");
                    this.dataGridView1.Rows[inti].Cells[1].Value = oLib[inti].DistOri.ToString("000.0000");
                    this.dataGridView1.Rows[inti].Cells[2].Value = oLib[inti].Cota.ToString("000.0000");
                }
             }
    
            //****************************DUDA!!!!!!!!*****************************
    
            //Se supone que ya tengo mis datos de campo cargados en la libreta cLibretaPto
            //Ahora, tengo que empezar a analizar el desnivel entre el punto 1 y el 2
    
               private void btAnaliza_Click(object sender, EventArgs e)  
            {
                cPuntoXZ op1 = new cPuntoXZ();
                op1 = oLibreta[0];  //¿ESTA BIEN???
                double des=0;
    
                Int32 inicio = 1;
                for (Int32 i = inicio; i < oLibreta.Count; i++)  //aquí tiene que recorrer todos los registros de la libreta
                {
                    cPuntoXZ p2 = new cPuntoXZ();
                    p2 = oLibreta[i];
                    
                                    
                    des=Math. Abs(p2.Cota - op1.Cota);  //calculo el desnivel entre p1 y p2 en valor absoluto
                     if ( des>0.50   )
                     {
                   
                         //llamo al metodo interseccion y cojo el punto de resalto
                        cPuntoResalto Pr = new cPuntoResalto ();  //creo el objeto para guardar el pto que me va a calcular el metodo
                         Pr.Interseccion(op1,p2);
                         if (Pr!=null)  // si hay punto de interseccion
    
                         {   //copia el pto de interseccion a la libretaResalto
                            cLibretaResalto.add(Pr);
                             Pr.Pant=i;   
                             Pr.Ppost=i+1;
                            
                         }
    
                     
                     }
    
    
                     else
                     {
                   //  calculo entre p2 y p3
    
                     }
    
                }
               }

    Despues de la llamada al metodo ESCRIBE_TABLA, pongo un punto de interrupción. Lo que viene a continuación ( private void btAnaliza_Click), tiene algo mal hecho, y por eso quiero depurar hasta justo antes para saber si lo anterior funciona.

    Marco el punto de interrupcion, depuro con F11 y no se para, es decir, que tengo 8 excepciones, las mismas que cuando depuro todo del tirón.

    Y si ya de paso me dais alguna pista de lo que estoy haciendo mal aqui:

    Me da la excepcion: Error    1    El operador '<' no se puede aplicar a operandos del tipo 'int' y 'grupo de métodos'   

    private void btAnaliza_Click(object sender, EventArgs e) { cPuntoXZ op1 = new cPuntoXZ(); op1 = oLibreta[0]; //¿ESTA BIEN??? double des=0; Int32 inicio = 1; for (Int32 i = inicio; i < oLibreta.Count; i++)

    jueves, 10 de enero de 2013 17:29
  • Marco el punto de interrupcion, depuro con F11 y no se para, es decir, que tengo 8 excepciones, las mismas que cuando depuro todo del tirón.

    pero el depurar no corrige los errores magicamente, o sea ir con F11 o con F10 permite que inspecciones variables y veas que camino toma el codigo, pero debes tu solucionar los problemas

    es mas que seguro que tendras los mismo errores, que suceda es correcto

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 10 de enero de 2013 17:44
  • Me da la excepcion: Error    1    El operador '<' no se puede aplicar a operandos del tipo 'int' y 'grupo de métodos'   

    eso lo marca en la linea

                for (Int32 i = inicio; i < oLibreta.Count; i++) 

    porque quizas debas usar el Length para saber la cantidad de items del array


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 10 de enero de 2013 17:46