2010-11-09 2 views
0

Я заинтересован в отображении объекта struct/class определенным образом с использованием отладчика GDB по умолчанию Netche для проектов C и C++, поэтому я могу быстрее выполнить код. Для Java есть простой способ сделать это, используя раздел «Variable Formatters» в разделе «Инструменты» -> «Параметры» -> «Разное» -> «Переменные формы». Я ищу что-то подобное для C/C++. Существует ли этот метод?Netbeans print debug value C/C++

EDIT: Чтобы уточнить мой вопрос, в теге переменных отладчика есть столбец «Значение». Я хотел бы представить это как вызов от объекта, например printf("%s", MyObject.getHeight());

ответ

0

Я не знаю, Netbeans достаточно, чтобы помочь вам с макросом, чтобы сделать это, но есть простое решение, либо:

  • пусть для регулирования доступа к отладчику переменной (из «общественных», а не рядовые в вашем C++ класс)

или

  • добавить этот код в программе: INT высоту = MyObject.getHeight(); поэтому вы можете отобразить переменную в отладчике.

Вещи обычно делаются путем упрощения проблемы.

+0

Хотя второй момент - это решение, это не помогает моей проблеме. Если бы был только один экземпляр объекта, я бы не возражал, но есть сотни во всей программе, и я не хочу изменять исходный код. Можете ли вы рассказать о первом пункте? Могу ли я позволить отладчику получить доступ к этой переменной так, чтобы она всегда отображалась в этом поле значений? – Ryan

2

Я считаю, что вы ищете может быть достигнуто с помощью довольно функцию печати Python в GDB, как описано в следующем:

https://sourceware.org/gdb/current/onlinedocs/gdb/Pretty-Printing.html#Pretty-Printing https://sourceware.org/gdb/current/onlinedocs/gdb/Pretty-Printing-API.html#Pretty-Printing-API

Использование механизма довольно печати Python, вы можете что gdb представит NetBeans значение данного типа. Я сам использовал это, чтобы настроить отображение на вкладке «Переменные» для моих собственных классов. Это требует немного чтения и крошечного знания Python, но это чудесно мощно, как только вы получите его, и, безусловно, стоит изучить.