Вы знаете управляемый эквивалент '@eax'? - PullRequest
3 голосов
/ 17 декабря 2008

В неуправляемом мире разработки вы можете наблюдать возвращаемое значение DWORD метода, набрав '@eax' в окне наблюдения отладчика.

Кто-нибудь знает эквивалентный ярлык в управляемом коде?

Связанный вопрос: я узнал, что VS2008 SP1 поддерживает $ exception как волшебное слово в окне просмотра. Есть ли другие известные вам ярлыки?

Ответы [ 3 ]

4 голосов
/ 17 декабря 2008

Я не уверен, что это именно то, что вы имеете в виду, но есть некоторые другие ключевые слова, которые вы можете распечатать для точек трассировки:

  $ADDRESS      address of current instruction
  $CALLER       name of the previous function on the call stack
  $CALLSTACK    entire call stack
  $FUNCTION     name of the current function
  $PID          process ID for current process
  $PNAME        name of the current process
  $TID          thread ID for current thread
  $TNAME        name of the current thread
3 голосов
/ 25 декабря 2008

Уловки окна наблюдения, такие как @eax, называются [Psuedovariables]. На самом деле они задокументированы. Я написал сообщение в блоге об этом и некоторых других элементах отладки VS несколько лет назад. Спецификаторы формата обычно очень полезны.

Для вашего конкретного вопроса в управляемом коде нет переменной psuedo для eax. Однако есть окно регистров, в котором на самом деле будет EAX и другие регистры. Сомнительно, что это будет полезно во многих ситуациях, так как я не верю, что есть какой-либо способ привести адрес к управляемому типу. Однако вы можете посмотреть на макет в окне памяти

1 голос
/ 23 декабря 2008

@ EAX в управляемом коде реализовать немного сложнее, поскольку в CIL есть примитивы высшего порядка для возвратов функций (которые происходят семантически в стеке виртуального выполнения).

Тем не менее, если ваша функция возвращает тип значения, а размер этого типа меньше или равен 32-разрядным, то @EAX, скорее всего, все равно даст вам это значение. (Вам может потребоваться включить отладку в смешанном режиме, чтобы увидеть регистры, я не помню, чтобы это было в голове.) Это, конечно, не работает для ссылочных типов, типов больших значений и встроенных функций.

Короче, хотелось бы, чтобы это тоже было встроено в отладчик!

...