Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > kdevelop дизассемблирование


Автор: Graf Zeppelin 18.5.2008, 12:45
Хотелось бы во время отладки программы в kdevelop (используется GDB) иметь возможность просматривать код программы на ассемблере. В IDE есть вкладка "Disassemble", но при нажатии на неё вылетает следующее:
Код

The exception is: MI type error
The MI response is: ^done,asm_insns=[{address="0x08048443",func-name="main",offset="79",inst="mov    $0x0,%eax"},
{address="0x08048448",func-name="main",offset="84",inst="add    $0x14,%esp"},
{address="0x0804844b",func-name="main",offset="87",inst="pop    %ecx"},
{address="0x0804844c",func-name="main",offset="88",inst="pop    %ebp"},
{address="0x0804844d",func-name="main",offset="89",inst="lea    -0x4(%ecx),%esp"},
{address="0x08048450",func-name="main",offset="92",inst="ret    "},
{address="0x08048451",func-name="write",offset="0",inst="push   %ebp"},
{address="0x08048452",func-name="write",offset="1",inst="mov    %esp,%ebp"},
{address="0x08048454",func-name="write",offset="3",inst="sub    $0x18,%esp"},
{address="0x08048457",func-name="write",offset="6",inst="mov    0x8(%ebp),%eax"},
{address="0x0804845a",func-name="write",offset="9",inst="mov    %eax,0x4(%esp)"},
{address="0x0804845e",func-name="write",offset="13",inst="lea    -0x5(%ebp),%eax"},
{address="0x08048461",func-name="write",offset="16",inst="mov    %eax,(%esp)"},
{address="0x08048464",func-name="write",offset="19",inst="call   0x8048340 <strcpy@plt>"},
{address="0x08048469",func-name="write",offset="24",inst="movl   $0x8048540,(%esp)"},
{address="0x08048470",func-name="write",offset="31",inst="call   0x8048360 <puts@plt>"},
{address="0x08048475",func-name="write",offset="36",inst="leave  "},
{address="0x08048476",func-name="write",offset="37",inst="ret  "},
{address="0x08048477",inst="nop    "},
{address="0x08048478",inst="nop    "},
{address="0x08048479",inst="nop    "},
{address="0x0804847a",inst="nop    "},
{address="0x0804847b",inst="nop    "},
{address="0x0804847c",inst="nop    "},
{address="0x0804847d",inst="nop    "},
{address="0x0804847e",inst="nop    "},
{address="0x0804847f",inst="nop    "},
{address="0x08048480",func-name="__libc_csu_fini",offset="0",inst="push   %ebp"},
{address="0x08048481",func-name="__libc_csu_fini",offset="1",inst="mov    %esp,%ebp"},
{address="0x08048483",func-name="__libc_csu_fini",offset="3",inst="pop    %ebp"},
{address="0x08048484",func-name="__libc_csu_fini",offset="4",inst="ret"},{address="0x08048485",inst="lea    0x0(%esi,%eiz,1),%esi"},
{address="0x08048489",inst="lea    0x0(%edi,%eiz,1),%edi"},
{address="0x08048490",func-name="__libc_csu_init",offset="0",inst="push   %ebp"},
{address="0x08048491",func-name="__libc_csu_init",offset="1",inst="mov    %esp,%ebp"},
{address="0x08048493",func-name="__libc_csu_init",offset="3",inst="push   %edi"},
{address="0x08048494",func-name="__libc_csu_init",offset="4",inst="push   %esi"},
{address="0x08048495",func-name="__libc_csu_init",offset="5",inst="push   %ebx"},
{address="0x08048496",func-name="__libc_csu_init",offset="6",inst="call   0x80484ea <__i686.get_pc_thunk.bx>"},
{address="0x0804849b",func-name="__libc_csu_init",offset="11",inst="add    $0x119d,%ebx"},
{address="0x080484a1",func-name="__libc_csu_init",offset="17",inst="sub    $0xc,%esp"},
{address="0x080484a4",func-name="__libc_csu_init",offset="20",inst="call   0x80482e0 <_init>"},
{address="0x080484a9",func-name="__libc_csu_init",offset="25",inst="lea    -0xe8(%ebx),%edi"},
{address="0x080484af",func-name="__libc_csu_init",offset="31",inst="lea    -0xe8(%ebx),%eax"},
{address="0x080484b5",func-name="__libc_csu_init",offset="37",inst="sub    %eax,%edi"},
{address="0x080484b7",func-name="__libc_csu_init",offset="39",inst="sar    $0x2,%edi"},
{address="0x080484ba",func-name="__libc_csu_init",offset="42",inst="test   %edi,%edi"},
{address="0x080484bc",func-name="__libc_csu_init",offset="44",inst="je     0x80484e2 <__libc_csu_init+82>"},
{address="0x080484be",func-name="__libc_csu_init",offset="46",inst="xor    %esi,%esi"},
{address="0x080484c0",func-name="__libc_csu_init",offset="48",inst="mov    0x10(%ebp),%eax"}]

Возможно для этого надо какие-то ключи добавлять к опциям компиляции или либу поставить какую-то? Я просто неоднократно сталкивался с тем, что по причине использования Kdevelop в Gnome для корректной работы надо ставить какие-то пакеты которые в зависимости не прописаны. Что посоветуете? 
В остальном отладка нормально работает.

Автор: Graf Zeppelin 18.5.2008, 14:33
Проблема частично решена - код показывается, но суть была в том, что программа была слишком короткая. Как это связано с работой отладчика - затрудняюсь сказать =)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)