Гейзенбаг

Discussion in 'Off Topic' started by bzdems, May 8, 2015.

  1. bzdems

    bzdems Well-Known Member

    Joined:
    May 3, 2001
    Messages:
    10,144
    Location:
    msk, ru
    Гейзенбаг

    Visual C++ enterprise 6.0 и Compaq visual FORTRAN professional 6.6.0.
    Если убрать комментарий с write, программа работает исправно.
    Ошибка повторяется на разном железе.
    У кого какие мысли?
     

    Attached Files:

  2. mcgru-

    mcgru- Well-Known Member

    Joined:
    Sep 21, 2000
    Messages:
    61,470
    Location:
    Tomsk, Russia
    Re: Гейзенбаг

    попробуй вместо write написать какой-нить бестолковый оператор, например, zzz=x+y - и посмотри как будет вести себя программа.

    какая-то фигня с компиляторами, наверное. что-то оставляют в регистрах.
     
  3. breedr

    breedr FH Developer

    Joined:
    Jan 27, 2000
    Messages:
    970
    Re: Гейзенбаг

    можешь показать в отладчике ассемблерный код в обоих случаях?
     
  4. -rust-

    -rust- Well-Known Member

    Joined:
    Jan 23, 2000
    Messages:
    5,291
    Re: Гейзенбаг

    А что за ошибка то?
    И да, давай ассемблерные дампы функции с и без write
     
  5. -andy-

    -andy- Well-Known Member

    Joined:
    Feb 12, 2000
    Messages:
    8,871
    Location:
    St.Petersburg
    Re: Гейзенбаг

    Память портится где-то. Ищи, где пишешь до начала или за концом массива. И действительно, смотри отладчиком.
     
  6. -rust-

    -rust- Well-Known Member

    Joined:
    Jan 23, 2000
    Messages:
    5,291
    Re: Гейзенбаг

    Да, скорее всего andy прав.

    Когда компилируется оператор write - то в сегмент данных кладется довольно длинная строка. Насколько я понимаю, она по логике никогда не используется или используется очень нечасто.

    Ошибка в коде (запись за границы массива) может "засирать" место, занимаемое этой строкой, но ты это не видишь.
    Если строку убрать, то ошибка начинает "засирать" другие, более важные данные.

    Если мелкомягкий отладчик позволяет устанавливать брекпойнт на изменение памяти - поставь брекпойнт на изменение области памяти (первые байт или первое слово по адресу строки).
     
  7. Flk

    Flk Well-Known Member

    Joined:
    Aug 21, 2002
    Messages:
    17,218
    Location:
    Izhevsk
    Re: Гейзенбаг

    Ухх, господа, старпёры... Вот ведь и есть желание изучить Фортран и Пролог, только времени нету. "Память портится" - люблю за это свои C/C++. GC - must die :)
    Бздемс, а какая нелёгкая, заставляет использовать Пролог в наше время?
     
    Last edited: May 8, 2015
  8. -andy-

    -andy- Well-Known Member

    Joined:
    Feb 12, 2000
    Messages:
    8,871
    Location:
    St.Petersburg
    Re: Гейзенбаг

    Где ты [censored] нашел у Бздемса Пролог?
     
  9. Flk

    Flk Well-Known Member

    Joined:
    Aug 21, 2002
    Messages:
    17,218
    Location:
    Izhevsk
    Re: Гейзенбаг

    См. [censored] союз "Ы". Ну очепятался. Пролог мне тоже интересен. Даже без Бздемса.
     
  10. -andy-

    -andy- Well-Known Member

    Joined:
    Feb 12, 2000
    Messages:
    8,871
    Location:
    St.Petersburg
    Re: Гейзенбаг

    Ы?
     
  11. Flk

    Flk Well-Known Member

    Joined:
    Aug 21, 2002
    Messages:
    17,218
    Location:
    Izhevsk
    Re: Гейзенбаг

    Типа того. Просто Пролог мне более интересен, от того и "очепятка".
    А вообще я в своё время в ахуе был, когда 15 лет назад 50-летние "тётеньки" на Клиппере БД фигачили :)