随笔 - 1, 文章 - 2, 评论 - 0, 引用 - 0
数据加载中……

2009年10月15日

gdb调试nasm语法的汇编程序

源代码
 1 section .data          
 2         msg db 'Hello, world!'0xA    
 3         len equ $ - msg                 
 4 section .text            
 5 global main            
 6 main:                  
 7         mov edx, len     
 8         mov ecx, msg    
 9         mov ebx, 1       
10         mov eax, 4      
11         int 0x80         
12         mov ebx, 0      
13         mov eax, 1       
14         int 0x80  
开始调试javen@javen-laptop:~/study$ nasm -f elf hello.asm --F stabs
javen@javen-laptop:~/study$ gcc -o hello hello.o -g
javen@javen
-laptop:~/study$ gdb hello
GNU gdb 
6.8-debian
Copyright (C) 
2008 Free Software Foundation, Inc.
License GPLv3
+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type 
"show copying"
and 
"show warranty" for details.
This GDB was configured as 
"i486-linux-gnu"
(gdb) 
开始运行
(gdb) start
Breakpoint 
1 at 0x80483a0: file hello.asm, line 7.
Starting program: 
/home/javen/study/hello 
main () at hello.asm:
7
7            mov edx, len     
(gdb)
查看反汇编,结果是AT&T语法。
(gdb) disassemble
Dump of assembler code 
for function main:
0x080483a0 <main+0>:    mov    $0xe,%edx
0x080483a5 <main+5>:    mov    $0x804a010,%ecx
0x080483aa <main+10>:    mov    $0x1,%ebx
0x080483af <main+15>:    mov    $0x4,%eax
0x080483b4 <main+20>:    int    $0x80
0x080483b6 <main+22>:    mov    $0x0,%ebx
0x080483bb <main+27>:    mov    $0x1,%eax
0x080483c0 <main+32>:    int    $0x80
0x080483c2 <main+34>:    nop    
0x080483c3 <main+35>:    nop    
0x080483c4 <main+36>:    nop    
0x080483c5 <main+37>:    nop    
0x080483c6 <main+38>:    nop    
0x080483c7 <main+39>:    nop    
0x080483c8 <main+40>:    nop    
0x080483c9 <main+41>:    nop    
0x080483ca <main+42>:    nop    
0x080483cb <main+43>:    nop    
0x080483cc <main+44>:    nop    
0x080483cd <main+45>:    nop    
0x080483ce <main+46>:    nop    
0x080483cf <main+47>:    nop
运行下一步,并查看寄存器,eip改变
(gdb) n
8            mov ecx, msg    
(gdb) info register
eax            
0xbfcd9864    -1077045148
ecx            
0xe2d47497    -489393001
edx            
0xe    14
ebx            
0xb80c3ff4    -1207156748
esp            
0xbfcd97dc    0xbfcd97dc
ebp            
0xbfcd9838    0xbfcd9838
esi            
0x80483e0    134513632
edi            
0x80482e0    134513376
eip            0x80483a5    0x80483a5 <main+5>
eflags         
0x246    [ PF ZF IF ]
cs             
0x73    115
ss             
0x7b    123
ds             
0x7b    123
es             
0x7b    123
fs             
0x0    0
gs             
0x33    51
(gdb) n
9            mov ebx, 1       
(gdb) info register
eax            
0xbfcd9864    -1077045148
ecx            
0x804a010    134520848
edx            
0xe    14
ebx            
0xb80c3ff4    -1207156748
esp            
0xbfcd97dc    0xbfcd97dc
ebp            
0xbfcd9838    0xbfcd9838
esi            
0x80483e0    134513632
edi            
0x80482e0    134513376
eip            
0x80483aa    0x80483aa <main+10>
eflags         
0x246    [ PF ZF IF ]
cs             
0x73    115
ss             
0x7b    123
ds             
0x7b    123
es             
0x7b    123
fs             
0x0    0
gs             
0x33    51
(gdb)
查看内存
(gdb) x  0x80483aa
0x80483aa <main+10>:    0x000001bb
(gdb) x  
0x80483a5
0x80483a5 <main+5>:    0x04a010b9
(gdb) 

详细的gdb使用网上搜索。


posted @ 2009-10-15 14:50 贾小二 阅读(1370) | 评论 (0)编辑 收藏

2009年10月14日

ubuntu中tomcat下jsp字体呈方块解决方法

在ubuntu现开发web项目,采用编码GBK的发现,项目运行起来之后jsp页面中从数据库中拉取的数据中文字体显示为小方块。最终找到了解决方法。
1 首先解决java代来的字体问题,对于jdk1。6解决方法比较简单,在$JAVA_HOME/jre/lib/fonts新建目录fallback直接把相应的中文字体(我用的simsun.ttc),复制到该目录下。其他版本的jdk相对比较复杂一些可以到网上搜索解决方案。
2 第一部完成之后发现,又报表声称图片中的字体正常显示,但数据中拉的中字体还是有很多。现在仔细看一下已经不是没有字体了是乱码问题。剩下的问题有两种解决方法
    (1) 修改$TOMCAT_HOME/BIN/CATALINA.SH,在最上面添加一行
                 CATALINA_OPTS=-Dfile.encoding=GBK
    (2)在shell下
              locale
               命令发现linux默认的locale是utf-8 在命令行键入  LANG=“zh_CN.GBK”,然后在键入locale 命令,没有一下警告
    locale: Cannot set LC_CTYPE to default locale: No such file or directory
    locale: Cannot set LC_MESSAGES to default locale: No such file or directory
      locale: Cannot set LC_ALL to default locale: No such file or directory
   则问题解决了。
如果有此警告,sudo vi /var/lib/locales/supported.d/local
  修改在末尾加入
            zh_CN.GBK GBK
然后     用命令sudo locale-gen 重新生成locale。问题的一解决。

   归根是因为jvm的编码的问题,因为jvm默认的依赖本地编码,在(1)中是强行设置jvm的编码。而(2)是修改本地编码。解决方法不一样,但是目的却是一样。

posted @ 2009-10-14 14:25 贾小二 阅读(637) | 评论 (0)编辑 收藏

新的开始

新的起点,新的开始,忘记以前所学的一切 ,从头学起!

posted @ 2009-10-14 14:10 贾小二 阅读(144) | 评论 (0)编辑 收藏