📄 1059.html
字号:
(gdb) s<br>
30 doink.boik = &r1;<br>
(gdb)<br>
32 do_one_thing(&doink);<br>
(gdb)<br>
do_one_thing (pnum_times=0x1fffffff690) at simple.c:47<br>
47 for (i = 0; i < 4; i++) {<br>
<br>
图 4<br>
<br>
如何处理这种情况呢?使用 si 和 ni(next instruction;它类似 si,但是会跳过子例程调用)将非常有帮助。 在这个层次上,很好理解 zArchitecture 是有所帮助的。<br>
<br>
<br>
(gdb) break *main<br>
Breakpoint 1 at 0x80000794: file simple.c, line 27.<br>
(gdb) display /i $pswa<br>
(gdb) r<br>
Starting program: /home/grundym/foo/simple<br>
<br>
Breakpoint 1, main () at simple.c:27<br>
27 {<br>
1: x/i $pswa 0x80000794 : EB AF F0 50 00 24 stmg %r10,%r15,80(%r15)<br>
(gdb) si<br>
0x8000079a 27 {<br>
1: x/i $pswa 0x8000079a : B9 04 00 1F lgr %r1,%r15<br>
(gdb)<br>
0x8000079e 27 {<br>
1: x/i $pswa 0x8000079e : A7 FB FF 58 aghi %r15,-168<br>
(gdb)<br>
0x800007a2 in main () at simple.c:27<br>
27 {<br>
1: x/i $pswa 0x800007a2 : E3 10 F0 00 00 24 stg %r1,0(%r15)<br>
(gdb)<br>
32 do_one_thing(&doink);<br>
1: x/i $pswa 0x800007a8 : 41 C0 F0 A0 la %r12,160(%r15)<br>
(gdb)<br>
30 doink.boik = &r1;<br>
1: x/i $pswa 0x800007ac : C0 10 00 00 08 C2 larl %r1,0x80001930 <br>
(gdb)<br>
0x800007b2 30 doink.boik = &r1;<br>
1: x/i $pswa 0x800007b2 : E3 10 F0 A0 00 24 stg %r1,160(%r15)<br>
(gdb)<br>
32 do_one_thing(&doink);<br>
1: x/i $pswa 0x800007b8 : B9 04 00 2C lgr %r2,%r12<br>
(gdb)<br>
0x800007bc 32 do_one_thing(&doink);<br>
1: x/i $pswa 0x800007bc : C0 E5 FF FF FF 68 brasl %r14,0x8000068c <br>
(gdb)<br>
do_one_thing (pnum_times=0x1fffffff7f8) at simple.c:44<br>
44 {<br>
1: x/i $pswa 0x8000068c : EB BF F0 58 00 24 stmg %r11,%r15,88(%r15)<br>
(gdb)<br>
<br>
图 5<br>
<br>
图 5 显示了为调试而对程序进行的设置。首先在 main()的地址处设置一个断点,然后设置一个 display。display 是一个表达式,它在每次代码停止执行时打印有关信息。在此例中,display 被设置为显示当前指令地址处的指令。/i 是打印为反汇编代码的格式,而当前指令指针在值/寄存器(value/register)$pswa 中。<br>
<br>
单步调试代码,可以明显看出每条机器指令都与一行 c 代码相关联。 前四行与第 27 行(即函数 main 的开头)相关联。前四行是典型的函数引入操作,它们保存寄存器、堆栈指针并调整堆栈。当关联的行号变为 32 时,我们就设置好了对 do_one_thing() 的函数调用。<br>
<br>
当 display 在工作时,它显示 x /i 作为实际数据显示之前的命令。x 是检查内存的命令。/i 是以指令格式来格式化;/x 将以 16 进制格式来格式化;而 /a 将以 16 进制来格式化。然而,您应该在尽可能的地方把该值看作是地址,并解析符号名称。<br>
<br>
<br>
display /i $pswa<br>
display /x $pswm<br>
display /a $r0<br>
display /a $r1<br>
display /a $r2<br>
display /a $r3<br>
display /a $r4<br>
display /a $r5<br>
display /a $r6<br>
display /a $r7<br>
display /a $r8<br>
display /a $r9<br>
display /a $r10<br>
display /a $r11<br>
display /a $r12<br>
display /a $r13<br>
display /a $r12<br>
display /a $r14<br>
display /a $r15<br>
display /10i $pswa<br>
<br>
图 6<br>
<br>
当在指令级工作时,设置一些显示可能是有所帮助的。您可以将所有 display 命令放在一个文件中,并在命令行上使用 -x 选项来指定它。图 6 包含了工作在汇编程序级时通常使用的 display 命令。<br>
<br>
<br>
Breakpoint 1, main () at simple.c:27<br>
27 {<br>
20: x/10i $pswa<br>
0x80000794 : EB AF F0 50 00 24 stmg %r10,%r15,80(%r15)<br>
0x8000079a : B9 04 00 1F lgr %r1,%r15<br>
0x8000079e : A7 FB FF 58 aghi %r15,-168<br>
0x800007a2 : E3 10 F0 00 00 24 stg %r1,0(%r15)<br>
0x800007a8 : 41 C0 F0 A0 la %r12,160(%r15)<br>
0x800007ac : C0 10 00 00 08 C2 larl %r1,0x80001930 <br>
0x800007b2 : E3 10 F0 A0 00 24 stg %r1,160(%r15)<br>
0x800007b8 : B9 04 00 2C lgr %r2,%r12<br>
0x800007bc : C0 E5 FF FF FF 68 brasl %r14,0x8000068c <br>
0x800007c2 : E3 10 F0 A0 00 04 lg %r1,160(%r15)<br>
19: /a $r15 = 0x1fffffff698<br>
18: /a $r14 = 0x10000057b04 <__libc_start_main+260><br>
17: /a $r12 = 0x10000019108 <__curbrk+280><br>
16: /a $r13 = 0x8006c9be<br>
15: /a $r12 = 0x10000019108 <__curbrk+280><br>
14: /a $r11 = 0x1fffffff7f8<br>
13: /a $r10 = 0x80000418 <_init><br>
12: /a $r9 = 0x100000198f8 <_dl_debug_mask><br>
11: /a $r8 = 0x1000017bee0 <br>
10: /a $r7 = 0x1<br>
9: /a $r6 = 0x2<br>
8: /a $r5 = 0x100001803d8 <br>
7: /a $r4 = 0x1fffffff808<br>
6: /a $r3 = 0x1fffffff7f8<br>
5: /a $r2 = 0x1<br>
4: /a $r1 = 0x80000794 <br>
3: /a $r0 = 0x1ff00000000<br>
2: /x $pswm = 0x705c00180000000<br>
1: x/i $pswa 0x80000794 : EB AF F0 50 00 24 stmg %r10,%r15,80(%r15)<br>
(gdb)<br>
<br>
图 7<br>
<br>
这个命令打印全部 PSW 值、所有通用寄存器和从当前指令地址开始的下 10 行机器代码。图 7 显示了当我们在 main() 处中断时的结果。可以看到,在其中一些寄存器所指向的地方,/a 格式解析是如何使得理解正在发生的事情更加容易的。<br>
<br>
结束语<br>
<br>
对于一些可用于 Linux 应用程序调试的基本工具以及调试过程本身,本文中的信息应该为您提供了有用的入门信息。
</FONT><br>
</TD>
</TR>
<TR>
<TD colSpan=2><FONT
class=middlefont></FONT><BR>
<FONT
class=normalfont>全文结束</FONT> </TD>
</TR>
<TR>
<TD background="images/dot.gif" tppabs="http://www.linuxhero.com/docs/images/dot.gif" colSpan=2
height=10></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></DIV></TD>
<TD vAlign=top width="20%"
background="images/line.gif" tppabs="http://www.linuxhero.com/docs/images/line.gif" rowSpan=2>
<DIV align=center>
<table class=tableoutline cellspacing=1 cellpadding=4
width="100%" align=center border=0>
<tr class=firstalt>
<td noWrap background="images/bgline.gif" tppabs="http://www.linuxhero.com/docs/images/bgline.gif" colspan=2 height=21>
<font class=normalfont><b>所有分类</b></font></td>
</tr>
<tr class=secondalt> <td noWrap width=27%> <font class=normalfont>1:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type1.html" tppabs="http://www.linuxhero.com/docs/type1.html">非技术类</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>2:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type2.html" tppabs="http://www.linuxhero.com/docs/type2.html">基础知识</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>3:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type3.html" tppabs="http://www.linuxhero.com/docs/type3.html">指令大全</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>4:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type4.html" tppabs="http://www.linuxhero.com/docs/type4.html">shell</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>5:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type5.html" tppabs="http://www.linuxhero.com/docs/type5.html">安装启动</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>6:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type6.html" tppabs="http://www.linuxhero.com/docs/type6.html">xwindow</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>7:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type7.html" tppabs="http://www.linuxhero.com/docs/type7.html">kde</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>8:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type8.html" tppabs="http://www.linuxhero.com/docs/type8.html">gnome</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>9:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type9.html" tppabs="http://www.linuxhero.com/docs/type9.html">输入法类</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>10:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type10.html" tppabs="http://www.linuxhero.com/docs/type10.html">美化汉化</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>11:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type11.html" tppabs="http://www.linuxhero.com/docs/type11.html">网络配置</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>12:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type12.html" tppabs="http://www.linuxhero.com/docs/type12.html">存储备份</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>13:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type13.html" tppabs="http://www.linuxhero.com/docs/type13.html">杂项工具</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>14:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type14.html" tppabs="http://www.linuxhero.com/docs/type14.html">编程技术</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>15:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type15.html" tppabs="http://www.linuxhero.com/docs/type15.html">网络安全</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>16:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type16.html" tppabs="http://www.linuxhero.com/docs/type16.html">内核技术</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>17:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type17.html" tppabs="http://www.linuxhero.com/docs/type17.html">速度优化</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>18:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type18.html" tppabs="http://www.linuxhero.com/docs/type18.html">apache</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>19:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type19.html" tppabs="http://www.linuxhero.com/docs/type19.html">email</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>20:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type20.html" tppabs="http://www.linuxhero.com/docs/type20.html">ftp服务</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>21:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type21.html" tppabs="http://www.linuxhero.com/docs/type21.html">cvs服务</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>22:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type22.html" tppabs="http://www.linuxhero.com/docs/type22.html">代理服务</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>23:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type23.html" tppabs="http://www.linuxhero.com/docs/type23.html">samba</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>24:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type24.html" tppabs="http://www.linuxhero.com/docs/type24.html">域名服务</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>25:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type25.html" tppabs="http://www.linuxhero.com/docs/type25.html">网络过滤</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>26:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type26.html" tppabs="http://www.linuxhero.com/docs/type26.html">其他服务</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>27:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type27.html" tppabs="http://www.linuxhero.com/docs/type27.html">nfs</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>28:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type28.html" tppabs="http://www.linuxhero.com/docs/type28.html">oracle</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>29:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type29.html" tppabs="http://www.linuxhero.com/docs/type29.html">dhcp</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>30:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type30.html" tppabs="http://www.linuxhero.com/docs/type30.html">mysql</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>31:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type31.html" tppabs="http://www.linuxhero.com/docs/type31.html">php</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>32:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type32.html" tppabs="http://www.linuxhero.com/docs/type32.html">ldap</a></font></td> </tr> </table></td></tr> </table>
</DIV></TD></TR>
<TR vAlign=top>
<TD width="80%">
<DIV align=center><BR>
</DIV>
</TD></TR></TBODY></TABLE></TD></TR>
</TABLE></TD></TR>
</TABLE>
<TABLE cellSpacing=0 cellPadding=4 width="100%" bgColor=#eeeeee
border=0><TBODY>
<TR>
<TD width="50%">
<P><FONT class=middlefont>版权所有 © 2004 <A
href="mailto:bjchenxu@sina.com">linux知识宝库</A><BR>
违者必究. </FONT></P>
</TD>
<TD width="50%">
<DIV align=right><FONT class=middlefont>Powered by: <A
href="mailto:bjchenxu@sina.com">Linux知识宝库</A> Version 0.9.0 </FONT></DIV>
</TD></TR></TBODY></TABLE>
<CENTER></CENTER></TD></TR>
</TABLE></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -