Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает breakpoint? Программа проскакивает breakpoint 
:(
    Опции темы
myendlessness
Дата 22.10.2010, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 8.8.2008

Репутация: нет
Всего: нет



Есть очень простая программа:
Код

using System;
using System.IO;

namespace Ha
{
    class HaReadWrite { 
    public static void Main(string[] args) {
        
        // Variables
        FileStream fin;
        int i;       
        
       // Looking for exceptions
        try {
            fin = new FileStream("Sc.bin", FileMode.Open, FileAccess.ReadWrite);
        } catch(FileNotFoundException exc) {
            Console.WriteLine(exc.Message);
            return;
        } 
        
        //Read a file
        short[] mas = new short[4096];
        int j=0;
        do
        {
            try
            {
                i = fin.ReadByte();
                mas[j] = (short)i;
                j++;
            }
            catch (Exception exc)
            {
                Console.WriteLine(exc.Message);
                return;
            }
            if (i != -1) Console.Write((char)i);
        } while (i != -1);
        
      fin.Close();   - здесь breakpoint
      }
    }
}


  Ставлю на "Close" breakpoint, но программа пролетает, всё работает без ошибок, но программа не останавливается там где надо! Подскажите, пожалуйста, в чём проблема? Среда разработки Microsoft Visual Studio 2008 C#
PM MAIL   Вверх
Мурлыкатам_
Дата 22.10.2010, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 5.2.2007
Где: город-герой Минск

Репутация: нет
Всего: 2



Какая милая программа smile

Брикпоинт может не работать с моей точки зрения в вижл студии в том случае, если управление туда не заходит.
Т.е. ввиду твоей логики программа не попадает в эту строчку. Это очень просто проверить. Добавь перед фин.клозе:

Код

Console.WriteLine("Fin close");

Или Trace.WriteLine(...); если в конфиге лог сконигурирован.

И посмотри, что выйдет smile

Просто добавь в это место еще какой-нить код и поставь туда брикпоинт.

перед:
Код

fin.Close();   - здесь breakpoint

Всегда нужно сделать проверку: 
Код

if(fin != null) fin.Close();

или использовать using.

Еще маленькая подсказка, зачем так трахаться с чтением байтов? smile
Всю вашу программу можно заменить на:
Код

try {
byte[] mass = File.ReadAllBytes("Sc.bin");
short[] massShort = new short[mass.Length];
for(int i =0; i<mass.Length; i++) {
   massShort[i] = (short) mass[i];
}
foreach(Short sh in massShort) Console.WriteLine((char)sh);
} catch(Exception ex) {
// TODO EXCEPTION HANDLING
}


Операции с байтами и шортами кажутся сомнительными, не удивлюсь если это окажется чтение текстового файла, которое мона вообще 1й строкой записать smile 
Код

Console.WriteLine(File.ReadAllText(... path to file....));


Это сообщение отредактировал(а) Мурлыкатам_ - 22.10.2010, 12:45


--------------------
Хочешь что-то сделать - сделай это сам или попроси помощи на винграде smile
user posted image
PM MAIL ICQ   Вверх
Kaerus
Дата 22.10.2010, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


WPF'er
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 3.9.2010

Репутация: нет
Всего: 1



myendlessness
Поставь breakpoint на 34 строке, у тебя скорее всего исключение из-за переполнения буфера (размер файла больше 4096 байт)
Код

short[] mas = new short[4096];

Замени на
Код

short[] mas = new short[fin.Length];


Это сообщение отредактировал(а) Kaerus - 22.10.2010, 12:47
PM MAIL ICQ   Вверх
Мурлыкатам_
Дата 22.10.2010, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 5.2.2007
Где: город-герой Минск

Репутация: нет
Всего: 2



Цитата(Kaerus @ 22.10.2010,  12:43)
myendlessness
Поставь breakpoint на 34 строке, у тебя скорее всего исключение из-за переполнения буфера (размер файла больше 4096 байт)
Код

short[] mas = new short[4096];

Код

 try
            {
                i = fin.ReadByte();
                mas[j] = (short)i;
                j++;
            }
            catch (Exception exc)
            {
                Console.WriteLine(exc.Message);
                return;
            }


Оно же в трай кэче. Зашло бы все ровно на фин клоз. А епта!  
Console.WriteLine(exc.Message);
                return; <-------------------------------------------------- Выход smile


--------------------
Хочешь что-то сделать - сделай это сам или попроси помощи на винграде smile
user posted image
PM MAIL ICQ   Вверх
myendlessness
Дата 22.10.2010, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 8.8.2008

Репутация: нет
Всего: нет



Ребята, Вы волшебники, спасибо Мурлакатам, спасибо Kaerus!  smile Давно не программировал, многое забылось. Действительно не срабатывала из-за переполнения буфера. Мурлакатам спасибо за код, попробую переписать иначе, многое надо вспоминать с нуля.   
PM MAIL   Вверх
Kolovorot
Дата 14.12.2010, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 12.1.2009

Репутация: нет
Всего: 3



А меня breakpoint начал проскакивать после переустанвоки VS2008. Принтскрин:
 user posted image
 smile 

Это сообщение отредактировал(а) Kolovorot - 14.12.2010, 15:32
--------------------
Никогда еще истина не повисала на руке безусловного. Фридрих Ницше. Так говорил Заратустра
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0453 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.