当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 2 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 如何让gdb可以调试内联汇编
帖子发表于 : 2007-09-16 2:14 

注册: 2007-09-07 3:08
帖子: 38
送出感谢: 0 次
接收感谢: 0 次
$gdb ./1
(gdb)b strtoint
(gdb)r
调试到strtoint时直接跳到了lb_exit或干脆就到结束的}号那里 调试不了那个函数的语句。
请问这个有法解决么?

代码:
#include <stdio.h>
#include <string.h>

#ifndef   NMULTD
#define   NMULTD(n)(((n) << 10) - ((n) << 4) - ((n) << 3))
#endif
#ifndef   __max
#define   __max(a, b)((a) > (b) ? (a) : (b))
#endif

int   strtoint(char* a)
{
   asm
   (
      ".intel_syntax noprefix\n"
      "push   ebx\n"
      "push   ecx\n"
      "push   edx\n"
      "mov   ebx, dword ptr [ebp + 8]\n"
      "xor   eax, eax\n"
      "xor   edx, edx\n"
      "movzx   ecx, byte ptr [ebx]\n"
      "cmp   ecx, '-'\n"
      "jne   lb_trytonumber\n"
      "inc   ebx\n"
      "or   edx, 0x01\n"
   "lb_trytonumber:\n"
      "movzx   ecx, byte ptr [ebx]\n"
      "test   ecx, ecx\n"
      "jz   lb_testflag\n"
      "sub   ecx, 0x30\n"
      "jl   lb_badformat\n"
      "cmp   ecx, 0x09\n"
      "jg   lb_badformat\n"
      "imul   eax, 0x0A\n"
      "jo   lb_badformat\n"
      "add   eax, ecx\n"
      "jo   lb_badformat\n"
      "inc   ebx\n"
      "jmp   lb_trytonumber\n"
   "lb_badformat:\n"
      "xor   eax, eax\n"
      "jmp   lb_exit\n"
   "lb_testflag:\n"
      "test   edx, edx\n"
      "jz   lb_exit\n"
      "neg   eax\n"
   "lb_exit:\n"
      "pop   edx\n"
      "pop   ecx\n"
      "pop   ebx\n"
      ".att_syntax noprefix\n"
   );
}

int   main(int argc, char *argv[])
{
   char s[256];
   int   i;
   printf("hello linux!\r\nplease type a integer value:");
   fgets(s, 9, stdin);
   i = strlen(s) - 1;
   s[__max(0, i)] = 0;
   i = strtoint(s);
   printf("[%s * 1000 = %d]\r\n", s, NMULTD(i));
   return 0;
}


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-09-16 4:15 
头像

注册: 2005-10-25 11:15
帖子: 1016
送出感谢: 0 次
接收感谢: 1
http://forum.ubuntu.org.cn/weblog_entry.php?e=3426


_________________
hreiser@oakland:~$ killall -9 wife
police@oakland:~$ sudo find / -user hreiser
court@oakland:~$ sudo mv /home/hreiser /jail/
court@oakland:~$ sudo usermod -d /jail/hreiser -s "/usr/sbin/chroot /jail/" hreiser


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 2 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译