[VS2005, 2008] for + for + if - bug
От: Анатолий Широков СССР  
Дата: 06.09.09 11:20
Оценка:
Показывал сыну как можно решить его задачу с помощью компьютера. Открыл Visual Studio 2008 Express Edition, с гордым видом набрал :

#include <stdio.h>
#include <stdlib.h>

int _tmain(int argc, _TCHAR* argv[])
{
    for(int i = 1; i < 10; i++)
        for(int j = 1; j < 10; j++)
            if( (i+j)*4 == (i*10+j) )
                printf("%d%d\n", i, j);
    return 0;
}


Запустил и получил ... пустую консоль, хотя на самом деле ожидал увидеть:

12
24
36
48


gcc понял меня правильно.
vs 2005 2008 for if bug
Re: [VS2005, 2008] for + for + if - bug
От: den123 Израиль http://den123.smugmug.com
Дата: 06.09.09 11:28
Оценка: +1
Здравствуйте, Анатолий Широков, Вы писали:

U menya vse rabotaet kak vi i ozhidali, no problem. VS 2008.
WBR — Yuriy
Re: [VS2005, 2008] for + for + if - bug
От: rg45 СССР  
Дата: 06.09.09 11:57
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

АШ>Показывал сыну как можно решить его задачу с помощью компьютера. Открыл Visual Studio 2008 Express Edition, с гордым видом набрал :


АШ>Запустил и получил ... пустую консоль, хотя на самом деле ожидал увидеть...


Возможно, это эдакий маркетинговый ход Microsoft? Вот мол, если хотите, чтоб ваши программы не только компилировались, но и работали, то покупайте что-нибудь посерьезнее Express Edition
--
Не можешь достичь желаемого — пожелай достигнутого.
Re: [VS2005, 2008] for + for + if - bug
От: Vain Россия google.ru
Дата: 06.09.09 12:52
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

АШ>Показывал сыну как можно решить его задачу с помощью компьютера. Открыл Visual Studio 2008 Express Edition, с гордым видом набрал :

АШ>Запустил и получил ... пустую консоль, хотя на самом деле ожидал увидеть:
Посмотрите во Event Viewer'е, может ваше приложение грохнулось не успев запуститься на какой-нить ненайденной DLL.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[2]: [VS2005, 2008] for + for + if - bug
От: Анатолий Широков СССР  
Дата: 06.09.09 13:18
Оценка:
Здравствуйте, Vain, Вы писали:

V>Здравствуйте, Анатолий Широков, Вы писали:


АШ>>Показывал сыну как можно решить его задачу с помощью компьютера. Открыл Visual Studio 2008 Express Edition, с гордым видом набрал :

АШ>>Запустил и получил ... пустую консоль, хотя на самом деле ожидал увидеть:
V>Посмотрите во Event Viewer'е, может ваше приложение грохнулось не успев запуститься на какой-нить ненайденной DLL.

Да, что-то такое есть :

'sasha.exe': Loaded 'C:\WINDOWS\system32\shell32.dll'
First-chance exception at 0x7c91b21a in sasha.exe: 0xC0000005: Access violation writing location 0x00000010.
'sasha.exe': Unloaded 'C:\WINDOWS\system32\cssdll32.dll'


Только приложение не грохается, дебаггер благополучно доходит до return 0, вылетев на первой итерации обоих циклов.
Если расставить скобки, то все работает как и ожидалось. Их консоли же и debug и release работают как и ожидалось. Видимо, здесь что-то со студией. Тему можно закрыть.
Re[3]: [VS2005, 2008] for + for + if - bug
От: Сергей Мухин Россия  
Дата: 06.09.09 21:01
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:


АШ>Только приложение не грохается, дебаггер благополучно доходит до return 0, вылетев на первой итерации обоих циклов.

АШ>Если расставить скобки, то все работает как и ожидалось. Их консоли же и debug и release работают как и ожидалось. Видимо, здесь что-то со студией. Тему можно закрыть.


т.е поставил не консоль? Т.е. твоя ошибка а не MS& последний пост не понятее
---
С уважением,
Сергей Мухин
Re[4]: [VS2005, 2008] for + for + if - bug
От: Анатолий Широков СССР  
Дата: 06.09.09 21:13
Оценка:
Здравствуйте, Сергей Мухин, Вы писали:

СМ>Здравствуйте, Анатолий Широков, Вы писали:



АШ>>Только приложение не грохается, дебаггер благополучно доходит до return 0, вылетев на первой итерации обоих циклов.

АШ>>Если расставить скобки, то все работает как и ожидалось. Их консоли же и debug и release работают как и ожидалось. Видимо, здесь что-то со студией. Тему можно закрыть.


СМ>т.е поставил не консоль? Т.е. твоя ошибка а не MS& последний пост не понятее


Приведенный код не выполняется под Visual Studio 2008 Express Edition (на одной машине) и Visual Studio 2005 Professional Edition (на другой машине), если запустить его из под среды в Debug режиме — на первой итерации дебаггер переходит на return 0. Если же запустить его из консоли, то и Debug и Release работают как и ожидалось.

Обратите внимание на значения i и j:
Re[5]: [VS2005, 2008] for + for + if - bug
От: Сергей Мухин Россия  
Дата: 06.09.09 21:26
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

СМ>>т.е поставил не консоль? Т.е. твоя ошибка а не MS& последний пост не понятее


АШ>Приведенный код не выполняется под Visual Studio 2008 Express Edition (на одной машине) и Visual Studio 2005 Professional Edition (на другой машине), если запустить его из под среды в Debug режиме — на первой итерации дебаггер переходит на return 0. Если же запустить его из консоли, то и Debug и Release работают как и ожидалось.


АШ>Обратите внимание на значения i и j:

АШ>

спасибо за пояснения. но легче не стало
видимо засада в дебагере.
смущает с0000005. откуда ей взяться?
---
С уважением,
Сергей Мухин
Re[5]: [VS2005, 2008] for + for + if - bug
От: byleas  
Дата: 06.09.09 22:22
Оценка: 6 (1) :)
Здравствуйте, Анатолий Широков, Вы писали:

АШ>на первой итерации дебаггер переходит на return 0

Это только кажется, т.к. нет закрывающих скобок, но переход в начало цикла есть и отладчик переходит на следующую строчку. Не знаю, баг или фича, но если открыть в окне дизассемблера (в студии), то прекрасно видно, что до "return 0" выполнение не доходит, пока циклы крутятся.

По поводу "пустой консоли" — проверьте тип проекта, чтобы был Console application (или PE Viewer'ом убедитесь в наличии Subsystem:Console).

По поводу "cssdll32.dll":

Cssdll32.dll is Trojan/Backdoor.

Re[6]: [VS2005, 2008] for + for + if - bug
От: Анатолий Широков СССР  
Дата: 07.09.09 04:11
Оценка:
Здравствуйте, byleas, Вы писали:

B>Здравствуйте, Анатолий Широков, Вы писали:


АШ>>на первой итерации дебаггер переходит на return 0

B>Это только кажется, т.к. нет закрывающих скобок, но переход в начало цикла есть и отладчик переходит на следующую строчку. Не знаю, баг или фича, но если открыть в окне дизассемблера (в студии), то прекрасно видно, что до "return 0" выполнение не доходит, пока циклы крутятся.

B>По поводу "пустой консоли" — проверьте тип проекта, чтобы был Console application (или PE Viewer'ом убедитесь в наличии Subsystem:Console).

Спасибо, вернули землю под ноги

B>По поводу "cssdll32.dll":

Cssdll32.dll is Trojan/Backdoor.



В данном случае это dll от COMODO
Re[7]: [VS2005, 2008] for + for + if - bug
От: ArtDenis Россия  
Дата: 07.09.09 12:49
Оценка:
Анатолий Широков пишет:
>
> В данном случае это dll от COMODO
Ну так сноси этот шкаф с компа Похоже что антивирусы и файрволы в
конец оборзели. Недавно пришлось касперского деинсталлировать, что
прога не вылетала при отладке (правда не в MS VS)
Posted via RSDN NNTP Server 2.1 beta
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[6]: [VS2005, 2008] for + for + if - bug
От: Кодт Россия  
Дата: 07.09.09 13:44
Оценка: +1
Здравствуйте, byleas, Вы писали:

АШ>>на первой итерации дебаггер переходит на return 0

B>Это только кажется, т.к. нет закрывающих скобок, но переход в начало цикла есть и отладчик переходит на следующую строчку. Не знаю, баг или фича, но если открыть в окне дизассемблера (в студии), то прекрасно видно, что до "return 0" выполнение не доходит, пока циклы крутятся.

Это беда сишной отладочной информации.
Поскольку точки остановки отладчика расставляются не по стейтментам, а по строкам, то инструкции, отвечающие за итерирование, оказываются как-бы-нигде. А фактически — в первой строке после тела цикла. (Возможно, разные компиляторы располагают их по-разному).
А когда отлаживаешься в дизассемблере, то шагаешь не по #line, а по инструкциям процессора.
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.