Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: BuRn от Июль 28, 2013, 13:08



Название: отображение пользовательских типов в отладчике
Отправлено: BuRn от Июль 28, 2013, 13:08
Добрый день.
Интересует такой вопрос, возможно ли сделать дополнение к отладчике. Что нужно:
Реализовал класс денег, хранятся данные в интах, когда смотрю под отладчиком, данные естественно отображаются в интах, а не в форме моего типа money. Хотелось бы видеть в отладчике вместо 1234567, что - то типа 12345,67


Название: Re: отображение пользовательских типов в отладчике
Отправлено: Figaro от Июль 28, 2013, 13:10
OS, debugger... какие?


Название: Re: отображение пользовательских типов в отладчике
Отправлено: BuRn от Июль 28, 2013, 13:15
OS, debugger... какие?
gdb + linux
В студии знаю что такое можно организовать


Название: Re: отображение пользовательских типов в отладчике
Отправлено: kamre от Июль 28, 2013, 15:38
В GDB есть возможность (http://stackoverflow.com/questions/12574253/c-gdb-python-pretty-printing-tutorial) писать pretty-printers на python.

Код
Python
import gdb
 
class MoneyPrinter:
 def __init__(self, val):
   self.val = val
 
 def to_string(self):
   return 'Money: ' + str(self.val['amount']*0.01)
 
def lookup_function (val):
 if str(val.type) == 'Money':
   return MoneyPrinter(val)
 return None
 
gdb.pretty_printers.append(lookup_function)
 

Код:
>gdb money.exe
...
Reading symbols from C:\...\money.exe...done.
(gdb) l
1       struct Money {
2         int amount;
3       };
4
5       int main()
6       {
7         Money m = { 123 };
8         return 0;
9       }
(gdb) b 8
Breakpoint 1 at 0x401576: file money.cpp, line 8.
(gdb) r
Starting program: C:\...\money.exe
[New Thread 1672.0x176c]

Breakpoint 1, main () at money.cpp:8
8         return 0;
(gdb) p m
$1 = Money: 1.23


Название: Re: отображение пользовательских типов в отладчике
Отправлено: BuRn от Июль 28, 2013, 16:53
А без питона никак ?


Название: Re: отображение пользовательских типов в отладчике
Отправлено: panAlexey от Июль 29, 2013, 09:06
А без питона никак ?
модифицируй сам gdb.