2016-10-31 9 views
0

Я все время сталкиваюсь с такими проблемами снова и снова, поэтому я спрашиваю сейчас. Я инженер электроники и, таким образом, использовал для написания кода с низким уровнем урожая. Я использую указатели в C++.Как разыменовать указатель во время отладки

У меня есть функция, которая принимает char * msg. Когда я прекращаю выполнение с использованием точки останова в функции, я могу видеть только первый байт параметра char *. Как мне получить остальное? Символ * не может быть завершен нулем и не будет иметь фиксированный размер. Предполагая, что я знаю, как долго это происходит, я не знаю, как рассказать об этом locals.

В Visual Studio эти вещи называются Immediate и Debug windows. Я их раньше не использовал? Могут ли они использоваться для печати произвольных символов из этого сообщения? В режиме разрыва? Как?

+1

Предполагая, что символ char * не может быть завершен и не будет иметь фиксированный размер, я предлагаю проверить адрес в указателе и использовать [_Memory_] (https://msdn.microsoft.com/en- us/library/s3aw423e.aspx), где вы можете перейти к этому адресу и посмотреть, с чего это содержимое, с самого начала и до того, как вы найдете то, что вам (или не найдете). Если вы не ошибаетесь, вы можете сделать это перед функцией и посмотреть, как изменяется содержимое на этом адресе (измененные байты должны быть выделены) во время отладки. –

+0

Я вижу, я не знал об этом наблюдателе памяти. Однако, это не только показывает вещи в гексагоне. Разве действительно невозможно использовать одно из них прямое или отладочное окно здесь? Я недоумеваю, для чего используются эти Windows. – quantum231

+0

@ quant231, не могли бы вы поделиться новейшей информацией об этой проблеме? –

ответ

0

Мы не могли отладить его непосредственно в окне отладки, другие члены также попросили такого рода вопросов до и разделяли причину, почему он просто показал первые байты полукокса * Параметр:

http://www.cplusplus.com/forum/general/23205/

vs2010 c++ view pointers content by debug

в окне просмотра памяти вы можете выбрать, как вы хотите, чтобы просмотреть данные, но если вы хотите, чтобы напечатать адрес, один обходной путь является то, что вы можете привести его к другому типу указателя, как разыгрываются в качестве указателя к мочеиспусканию или другие.