Обработка исключений, багов?

Тема в разделе "WASM.BEGINNERS", создана пользователем hapr, 1 фев 2019.

  1. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.241
    hapr если прога упала с известными входными параметрами, то акая трабла повторить крашЪ???
     
  2. hapr

    hapr Member

    Публикаций:
    0
    Регистрация:
    9 мар 2009
    Сообщения:
    59
    Я ведь самоучка так что думаю C особо плюсав не пренесет по в плане монетизации, да и ассемблер мне нравиться - так что видно будет.
     
  3. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.241
    писать все коды на асме всё же глупо: он нужен лишь в особо критических местах. к примеру, в gcc развитый инлайн асм.
     
  4. hapr

    hapr Member

    Публикаций:
    0
    Регистрация:
    9 мар 2009
    Сообщения:
    59
    Эх если бы так просто было...
    Программа весела целый день в панели задач - проверял так стабильность. И вдруг решил запустить игру и поменять разрешения экрана в игре и тут вылет. Ну и вот и менял разрешение и так и этак запускал - не хочет повторяться.
    Я предполагаю что ошибка выскочила так как я не проверял что сообщение может быть меньше чем WM_MOUSEMOVE у меня было так(это само собой в хуке):
    Код (ASM):
    1.    cmp  esi,WM_MOUSEMOVE;esi = [!wParam]
    2.    cmove  eax,esp  
    Поменял на :
    Код (ASM):
    1.     cmp  esi,WM_MOUSEMOVE;esi = [!wParam]
    2.    cmovle  eax,esp  
    А в этом проблема или нет время пакажет
    --- Сообщение объединено, 1 фев 2019 ---
    Согласен не удобно, но для учебных целей и плюс мне он нравиться - думаю самое то для меня.

    А потом, когда наберусь знаний или за серьезное что-то возьмусь, то и перейду на C.
    После ассемблера, думаю сложностей особых с этим не будет.
     
    Последнее редактирование модератором: 2 фев 2019
  5. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.241
    сделай лог входных данных + метки времени.
    не совсем понимаю каких знаний ты хочешь набраться :)
     
  6. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    UbIvItS,

    > не совсем понимаю каких знаний ты хочешь набраться :)

    Понятие как всё устроено на системном уровне. Вы изначальный вопрос помните, тс не отличает смещения от указателей и не может разобраться в нескольких элементарных структурах и механизмах. Си vs Asm это тема тёмная и смысла не имеющая, тут это просто упомянули в виде потока мыслей, точнее вы выбрали из этого потока.
     
  7. hapr

    hapr Member

    Публикаций:
    0
    Регистрация:
    9 мар 2009
    Сообщения:
    59
    В том смысле какие сообщения мышиные приходят? Если так то в свое время я этим уже занимался когда только разбирался как и что работает. Плюс там и логировать нечего что бы не быть многословным:
    Код (ASM):
    1.       ;Просто движение мыши пропускаем однозначно;Меньше проверяем так как был один баг на переходах от мыши может сообщение отрицательное или еще что
    2.       cmp  esi,WM_MOUSEMOVE;esi = [!wParam]
    3.    cmovle  eax,esp
    4.  
    5.      ;Если не равно нулю значит пропускаем
    6.      test  eax,eax
    7.       jnz  LowLevelKeyboardProc.Skip
    8.  
    9.     sub  esi,WM_LBUTTONDOWN
    10.       ;Проверим если сообщение больше последнего обрабатываемого или меньше первого обрабатываемого - пропускаем
    11.       cmp  esi,WM_MOUSEHWHEEL - WM_LBUTTONDOWN
    12.        ja  LowLevelKeyboardProc.Skip
    13.  
    14. jmp  dword[.JmpTable+esi*4];
    15.  
    16. .JmpTable ddA  .WM_LBUTTONDOWN;WM_LBUTTONDOWN
    17.            ddA  .WM_LBUTTONUP;WM_LBUTTONUP
    18.            ddA  LowLevelKeyboardProc.SkipUlock;WM_LBUTTONDBLCLK
    19.            ddA  .WM_RBUTTONDOWN;WM_RBUTTONDOWN
    20.            ddA  .WM_RBUTTONUP;WM_RBUTTONUP
    21.            ddA  LowLevelKeyboardProc.SkipUlock;WM_RBUTTONDBLCLK
    22.            ddA  .WM_MBUTTONDOWN;WM_MBUTTONDOWN
    23.            ddA  .WM_MBUTTONUP;WM_MBUTTONUP
    24.            ddA  LowLevelKeyboardProc.SkipUlock;WM_MBUTTONDBLCLK
    25.            ddA  .WM_MOUSEWHEEL;WM_MOUSEWHEEL
    26.            ddA  .WM_XBUTTONDOWN;WM_XBUTTONDOWN
    27.            ddA  .WM_XBUTTONUP;WM_XBUTTONUP
    28.            ddA  LowLevelKeyboardProc.SkipUlock;WM_XBUTTONDBLCLK
    29.            ddA  .WM_MOUSEHWHEEL;WM_MOUSEHWHEEL
    На эту таблицу больше ничего не должно вести, только если нету нигде в другом месте критической ошибки.
    --- Сообщение объединено, 1 фев 2019 ---
    Ну можно сказать Indy_ за меня уже ответил...
     
    Последнее редактирование модератором: 2 фев 2019
  8. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.241
    хех, логировать нечего :) можно метки в коде расставить и ужо сможешь локализовать место траблы.
     
  9. Коцит

    Коцит Active Member

    Публикаций:
    0
    Регистрация:
    31 янв 2017
    Сообщения:
    130
    Релоки не меняют базу, а только правят абсолютные адреса.
    Базу меняет или упомянутый "ASLR" (Address Space Layout Randomization) рандомом выбирая один из 256-возможных вариантов базы, или при коллизии модулей - сам загрузчик образов. А в таблице релоков находятся только 12-битные фиксапы, которые корректируют адрес в пределах одной 4К-байтной страницы: 212=4096
     
  10. hapr

    hapr Member

    Публикаций:
    0
    Регистрация:
    9 мар 2009
    Сообщения:
    59
    Идея хорошая, но в данный момент нету смысла использовать в виду что баг повторить так и не удалось, так как не достаточно информации для этого. Если или когда появиться больше информации, тогда попробую логирование. А так понадеюсь, что все таки я исправил уже.
    --- Сообщение объединено, 2 фев 2019 ---
    В принципе я это и имел ввиду, только написал без знания подробностей.
     
  11. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Тред не читай @ Сразу отвечай
    Помимо известных входных параметров почти к любой проге прилагается и несколько неизвестных :)
     
  12. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.241
    _DEN_, если ошибка происходит за пределами проги, то конечно == к примеру, при большой загрузке винта может происходить сбой свопа. к чисто софтварным траблам можно отнести сбои при использование либ 3ей стороны. но в любом случае детальное логирование даёт возможность максимально сузить круг подозреваемых :)