pstruct.html
来自「perl教程」· HTML 代码 · 共 241 行 · 第 1/2 页
HTML
241 行
<?xml version="1.0" ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<!-- saved from url=(0017)http://localhost/ -->
<script language="JavaScript" src="../displayToc.js"></script>
<script language="JavaScript" src="../tocParas.js"></script>
<script language="JavaScript" src="../tocTab.js"></script>
<link rel="stylesheet" type="text/css" href="../scineplex.css">
<title>pstruct - Dump C structures as generated from C<cc -g -S> stabs</title>
<link rel="stylesheet" href="../Active.css" type="text/css" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rev="made" href="mailto:" />
</head>
<body>
<script>writelinks('__top__',1);</script>
<h1><a>pstruct - Dump C structures as generated from C<cc -g -S> stabs</a></h1>
<p><a name="__index__"></a></p>
<!-- INDEX BEGIN -->
<ul>
<li><a href="#name">NAME</a></li>
<li><a href="#synopsis">SYNOPSIS</a></li>
<ul>
<li><a href="#options">OPTIONS</a></li>
</ul>
<li><a href="#description">DESCRIPTION</a></li>
</ul>
<!-- INDEX END -->
<hr />
<p>
</p>
<h1><a name="name">NAME</a></h1>
<p>c2ph, pstruct - Dump C structures as generated from <code>cc -g -S</code> stabs</p>
<p>
</p>
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<pre>
c2ph [-dpnP] [var=val] [files ...]</pre>
<p>
</p>
<h2><a name="options">OPTIONS</a></h2>
<pre>
Options:</pre>
<pre>
<span class="keyword">-w</span> <span class="variable">wide</span><span class="operator">;</span> <span class="variable">short</span> <span class="keyword">for</span><span class="operator">:</span> <span class="variable">type_width</span><span class="operator">=</span><span class="number">45</span> <span class="variable">member_width</span><span class="operator">=</span><span class="number">35</span> <span class="variable">offset_width</span><span class="operator">=</span><span class="number">8</span>
<span class="keyword">-x</span> <span class="keyword">hex</span><span class="operator">;</span> <span class="variable">short</span> <span class="keyword">for</span><span class="operator">:</span> <span class="variable">offset_fmt</span><span class="operator">=x</span> <span class="variable">offset_width</span><span class="operator">=</span><span class="number">08</span> <span class="variable">size_fmt</span><span class="operator">=x</span> <span class="variable">size_width</span><span class="operator">=</span><span class="number">04</span>
</pre>
<pre>
-n do not generate perl code (default when invoked as pstruct)
-p generate perl code (default when invoked as c2ph)
-v generate perl code, with C decls as comments</pre>
<pre>
-i do NOT recompute sizes for intrinsic datatypes
-a dump information on intrinsics also</pre>
<pre>
-t trace execution
-d spew reams of debugging output</pre>
<pre>
-slist give comma-separated list a structures to dump</pre>
<p>
</p>
<hr />
<h1><a name="description">DESCRIPTION</a></h1>
<p>The following is the old c2ph.doc documentation by Tom Christiansen
<<a href="mailto:tchrist@perl.com">tchrist@perl.com</a>>
Date: 25 Jul 91 08:10:21 GMT</p>
<p>Once upon a time, I wrote a program called pstruct. It was a perl
program that tried to parse out C structures and display their member
offsets for you. This was especially useful for people looking at
binary dumps or poking around the kernel.</p>
<p>Pstruct was not a pretty program. Neither was it particularly robust.
The problem, you see, was that the C compiler was much better at parsing
C than I could ever hope to be.</p>
<p>So I got smart: I decided to be lazy and let the C compiler parse the C,
which would spit out debugger stabs for me to read. These were much
easier to parse. It's still not a pretty program, but at least it's more
robust.</p>
<p>Pstruct takes any .c or .h files, or preferably .s ones, since that's
the format it is going to massage them into anyway, and spits out
listings like this:</p>
<pre>
<span class="variable">struct</span> <span class="variable">tty</span> <span class="operator">{</span>
<span class="keyword">int</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_locker</span> <span class="number">000</span> <span class="number">4</span>
<span class="keyword">int</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_mutex_index</span> <span class="number">004</span> <span class="number">4</span>
<span class="variable">struct</span> <span class="variable">tty</span> <span class="operator">*</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_tp_virt</span> <span class="number">008</span> <span class="number">4</span>
<span class="variable">struct</span> <span class="variable">clist</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_rawq</span> <span class="number">00</span><span class="variable">c</span> <span class="number">20</span>
<span class="keyword">int</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_rawq</span><span class="operator">.</span><span class="variable">c_cc</span> <span class="number">00</span><span class="variable">c</span> <span class="number">4</span>
<span class="keyword">int</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_rawq</span><span class="operator">.</span><span class="variable">c_cmax</span> <span class="number">010</span> <span class="number">4</span>
<span class="keyword">int</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_rawq</span><span class="operator">.</span><span class="variable">c_cfx</span> <span class="number">014</span> <span class="number">4</span>
<span class="keyword">int</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_rawq</span><span class="operator">.</span><span class="variable">c_clx</span> <span class="number">018</span> <span class="number">4</span>
<span class="variable">struct</span> <span class="variable">tty</span> <span class="operator">*</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_rawq</span><span class="operator">.</span><span class="variable">c_tp_cpu</span> <span class="number">01</span><span class="variable">c</span> <span class="number">4</span>
<span class="variable">struct</span> <span class="variable">tty</span> <span class="operator">*</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_rawq</span><span class="operator">.</span><span class="variable">c_tp_iop</span> <span class="number">020</span> <span class="number">4</span>
<span class="variable">unsigned</span> <span class="variable">char</span> <span class="operator">*</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_rawq</span><span class="operator">.</span><span class="variable">c_buf_cpu</span> <span class="number">024</span> <span class="number">4</span>
<span class="variable">unsigned</span> <span class="variable">char</span> <span class="operator">*</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_rawq</span><span class="operator">.</span><span class="variable">c_buf_iop</span> <span class="number">028</span> <span class="number">4</span>
<span class="variable">struct</span> <span class="variable">clist</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_canq</span> <span class="number">02</span><span class="variable">c</span> <span class="number">20</span>
<span class="keyword">int</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_canq</span><span class="operator">.</span><span class="variable">c_cc</span> <span class="number">02</span><span class="variable">c</span> <span class="number">4</span>
<span class="keyword">int</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_canq</span><span class="operator">.</span><span class="variable">c_cmax</span> <span class="number">030</span> <span class="number">4</span>
<span class="keyword">int</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_canq</span><span class="operator">.</span><span class="variable">c_cfx</span> <span class="number">034</span> <span class="number">4</span>
<span class="keyword">int</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_canq</span><span class="operator">.</span><span class="variable">c_clx</span> <span class="number">038</span> <span class="number">4</span>
<span class="variable">struct</span> <span class="variable">tty</span> <span class="operator">*</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_canq</span><span class="operator">.</span><span class="variable">c_tp_cpu</span> <span class="number">03</span><span class="variable">c</span> <span class="number">4</span>
<span class="variable">struct</span> <span class="variable">tty</span> <span class="operator">*</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_canq</span><span class="operator">.</span><span class="variable">c_tp_iop</span> <span class="number">040</span> <span class="number">4</span>
<span class="variable">unsigned</span> <span class="variable">char</span> <span class="operator">*</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_canq</span><span class="operator">.</span><span class="variable">c_buf_cpu</span> <span class="number">044</span> <span class="number">4</span>
<span class="variable">unsigned</span> <span class="variable">char</span> <span class="operator">*</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_canq</span><span class="operator">.</span><span class="variable">c_buf_iop</span> <span class="number">048</span> <span class="number">4</span>
<span class="variable">struct</span> <span class="variable">clist</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_outq</span> <span class="number">04</span><span class="variable">c</span> <span class="number">20</span>
<span class="keyword">int</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_outq</span><span class="operator">.</span><span class="variable">c_cc</span> <span class="number">04</span><span class="variable">c</span> <span class="number">4</span>
<span class="keyword">int</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_outq</span><span class="operator">.</span><span class="variable">c_cmax</span> <span class="number">050</span> <span class="number">4</span>
<span class="keyword">int</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_outq</span><span class="operator">.</span><span class="variable">c_cfx</span> <span class="number">054</span> <span class="number">4</span>
<span class="keyword">int</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_outq</span><span class="operator">.</span><span class="variable">c_clx</span> <span class="number">058</span> <span class="number">4</span>
<span class="variable">struct</span> <span class="variable">tty</span> <span class="operator">*</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_outq</span><span class="operator">.</span><span class="variable">c_tp_cpu</span> <span class="number">05</span><span class="variable">c</span> <span class="number">4</span>
<span class="variable">struct</span> <span class="variable">tty</span> <span class="operator">*</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_outq</span><span class="operator">.</span><span class="variable">c_tp_iop</span> <span class="number">060</span> <span class="number">4</span>
<span class="variable">unsigned</span> <span class="variable">char</span> <span class="operator">*</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_outq</span><span class="operator">.</span><span class="variable">c_buf_cpu</span> <span class="number">064</span> <span class="number">4</span>
<span class="variable">unsigned</span> <span class="variable">char</span> <span class="operator">*</span> <span class="variable">tty</span><span class="operator">.</span><span class="variable">t_outq</span><span class="operator">.</span><span class="variable">c_buf_iop</span> <span class="number">068</span> <span class="number">4</span>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?