Почему не устанавливается переменная в окне Watch в WinDbg

Тема в разделе "WASM.NT.KERNEL", создана пользователем neutronion, 23 апр 2011.

  1. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    Вопрос, наверное ламерский, но с наскока не удалось найти в нете ответа.
    В общем, останавливается драйвер, хочу посмотреть локальные переменные добавляю ее в окне Watch, после ентера или потери фокуса это переменная
    исчезает из окна Watch. Приходится в драйвере писать разные дурацкие конструкции, что бы узнать значения переменной.
     
  2. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    neutronion
    Перед именем переменной вписываются два символа $! ?
     
  3. TSS

    TSS New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2009
    Сообщения:
    494
    локальные в Locals, глобальные в watch
     
  4. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Для этого есть окно Locals, вызывается по Alt+3.

    Возможно, потому что в текущем стековом кадре (stack frame) такой переменной нет. К тому же, контекст потока ещё нужно правильно установить, особенно если речь про режим ядра. Ну или проблема с символами ещё может быть. Или ты тупо что-то не так пишешь в поле имени переменной в окне Watch.
     
  5. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    Как это не в контексте? Останавливается код в функции _asm int 3. У этой функции есть
    локальные переменные, вот они и не добавляются в окне Watch я никогда ничего не пишу, а копи-пастю, во избежании ошибок. Что касается символьного файла, то в окне
    WinDbg вижу, что он актуальный, бывают моменты, когда он устаревают, но я слежу за этим.

    Перед переменными не ставлю никаких знаков $! ?. А вот аргументы(!) этой функции, в которой я остановился на _asm int 3 нормально добавляются в Watch! Что за беда такая, глюк WinDbg?
     
  6. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    neutronion
    Намёк что ли не очень прозрачный получился? Поставьте. Сразу перед именем переменной. Без пробелов.
     
  7. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    О! Глобальные в watch!!! Нифига себе, разве это так? В документации вроде об этом ни слова.
     
  8. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    Сейчас. Нет так не выходит. $!Open, $Open, !Open, !$Open - по этим вариантам добавленная переменная также сразу исчезает.
    Локальная переменная в функции такая:
    POPEN_INSTANCE Open; Может название функции впереди указать надо?
    Нет. Глобальная переменная только добавляется.
     
  9. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    neutronion
    Первый вариант верный. Если продолжает исчезать, значит в текущем контексте, где Вы пытаетесь её установить, переменная отсутствует. Идентификатор локальности $! позволяет удерживать переменную в окне Watch, если в дальнейшем эта переменная будет отсутствовать (при трассировке кода из других контекстов), но не в момент её первого добавления в Watch.
     
  10. TSS

    TSS New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2009
    Сообщения:
    494
    У меня от таких вопросов кампег воспламенился: http://xmages.net/storage/10/1/0/0/1/upload/a714c34e.png Но всеже можно разглядеть, что глобалки показываются именно в Watch, а не гдето еще.
     
  11. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    Watch Window

    The Watch window displays information about global variables, local variables, and registers. You can customize this window to show the items that you are tracking.

    Все что могу сказать.
     
  12. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    ну контекст не проблема установить нужный, команда .process id
     
  13. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    neutronion
    Я говорил не контексте процесса. Переменная ведь не для процесса локальная? :) Я говорил о контексте блока кода. Блок кода выделяется фигурными скобками. Т.е. в момент добавления локальной переменной в окно Watch eip должен принадлежать тому же блоку кода, в котором объявлена переменная.
     
  14. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    Само собой эти условия соблюдены, потому-что я в функции ставлю _asm int 3