<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>新闻 on 对话录</title>
    <link>https://example.docsy.dev/zh/blog/news/</link>
    <description>Recent content in 新闻 on 对话录</description>
    <generator>Hugo</generator>
    <language>zh</language>
    <atom:link href="https://example.docsy.dev/zh/blog/news/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>我的 Sshwifty 终端页面</title>
      <link>https://example.docsy.dev/zh/blog/2025/05/31/%E6%88%91%E7%9A%84-sshwifty-%E7%BB%88%E7%AB%AF%E9%A1%B5%E9%9D%A2/</link>
      <pubDate>Sat, 31 May 2025 00:00:00 +0000</pubDate>
      <guid>https://example.docsy.dev/zh/blog/2025/05/31/%E6%88%91%E7%9A%84-sshwifty-%E7%BB%88%E7%AB%AF%E9%A1%B5%E9%9D%A2/</guid>
      <description>&lt;h2 id=&#34;嵌入式-ssh-终端&#34;&gt;嵌入式 SSH 终端&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%b5%8c%e5%85%a5%e5%bc%8f-ssh-%e7%bb%88%e7%ab%af&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;这是一个使用 Hugo 生成的页面，您可以在下面直接访问 SSH 终端：&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA; {# Add a title parameter #}&#xA;&#xA;&#xA;&#xA;&lt;div style=&#34;&#xA;    width: 90%;&#xA;    height: 700px;&#xA;    max-width: 1000px;&#xA;    margin: 20px auto; /* 居中显示 */&#xA;    border: 1px solid #ddd; /* 可选的边框 */&#xA;    box-shadow: 0 4px 8px rgba(0,0,0,0.1); /* 可选的阴影 */&#xA;    overflow: hidden; /* 隐藏容器可能出现的滚动条 */&#xA;    border-radius: 8px; /* 可选的圆角 */&#xA;&#34;&gt;&#xA;    &lt;iframe&#xA;        src=&#34;https://raop.top/sshwifty/&#34;&#xA;        width=&#34;100%&#34;&#xA;        height=&#34;100%&#34;&#xA;        frameborder=&#34;0&#34;&#xA;        allowfullscreen&#xA;        referrerpolicy=&#34;no-referrer-when-downgrade&#34;&#xA;        loading=&#34;lazy&#34;&#xA;        title=&#34;Sshwifty Web SSH Terminal&#34; {# Use the title parameter here #}&#xA;    &gt;&#xA;        &lt;p&gt;您的浏览器不支持内联框架（iframes）。&lt;/p&gt;&#xA;    &lt;/iframe&gt;&#xA;&lt;/div&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;如果您想嵌入一个 YouTube 视频，您可以这样做：&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA; {# Add a title parameter #}&#xA;&#xA;&#xA;&#xA;&lt;div style=&#34;&#xA;    width: 80%;&#xA;    height: 450px;&#xA;    max-width: 1200px;&#xA;    margin: 20px auto; /* 居中显示 */&#xA;    border: 1px solid #ddd; /* 可选的边框 */&#xA;    box-shadow: 0 4px 8px rgba(0,0,0,0.1); /* 可选的阴影 */&#xA;    overflow: hidden; /* 隐藏容器可能出现的滚动条 */&#xA;    border-radius: 8px; /* 可选的圆角 */&#xA;&#34;&gt;&#xA;    &lt;iframe&#xA;        src=&#34;https://www.youtube.com/embed/your-video-id&#34;&#xA;        width=&#34;100%&#34;&#xA;        height=&#34;100%&#34;&#xA;        frameborder=&#34;0&#34;&#xA;        allowfullscreen&#xA;        referrerpolicy=&#34;no-referrer-when-downgrade&#34;&#xA;        loading=&#34;lazy&#34;&#xA;        title=&#34;YouTube Video Example&#34; {# Use the title parameter here #}&#xA;    &gt;&#xA;        &lt;p&gt;您的浏览器不支持内联框架（iframes）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Debug</title>
      <link>https://example.docsy.dev/zh/blog/2025/05/29/debug/</link>
      <pubDate>Thu, 29 May 2025 00:00:00 +0000</pubDate>
      <guid>https://example.docsy.dev/zh/blog/2025/05/29/debug/</guid>
      <description>&lt;h1 id=&#34;使用-gdb-调试-hello-world-程序&#34;&gt;使用 GDB 调试 Hello World 程序&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e4%bd%bf%e7%94%a8-gdb-%e8%b0%83%e8%af%95-hello-world-%e7%a8%8b%e5%ba%8f&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;我将以一个简单的 C 语言 Hello World 程序为例，简洁地说明如何使用 GDB 调试。以下是步骤和关键命令：&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-准备-hello-world-程序&#34;&gt;1. 准备 Hello World 程序&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#1-%e5%87%86%e5%a4%87-hello-world-%e7%a8%8b%e5%ba%8f&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;创建 &lt;code&gt;hello.c&lt;/code&gt;：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;printf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Hello, World!&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;printf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;x = %d&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;2-编译程序&#34;&gt;2. 编译程序&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#2-%e7%bc%96%e8%af%91%e7%a8%8b%e5%ba%8f&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;使用 &lt;code&gt;-g&lt;/code&gt; 选项编译以包含调试信息：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gcc -g -o hello hello.c&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;3-启动-gdb&#34;&gt;3. 启动 GDB&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#3-%e5%90%af%e5%8a%a8-gdb&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;运行 GDB 并加载程序：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gdb ./hello&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;进入 GDB 交互界面：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;(&lt;/span&gt;gdb&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;4-调试步骤&#34;&gt;4. 调试步骤&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#4-%e8%b0%83%e8%af%95%e6%ad%a5%e9%aa%a4&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;以下是调试 hello.c 的过程：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hello</title>
      <link>https://example.docsy.dev/zh/blog/2025/05/29/hello/</link>
      <pubDate>Thu, 29 May 2025 00:00:00 +0000</pubDate>
      <guid>https://example.docsy.dev/zh/blog/2025/05/29/hello/</guid>
      <description>&lt;p&gt;你好，世界！&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hello, Wrold!</title>
      <link>https://example.docsy.dev/zh/blog/2025/05/29/hello-wrold/</link>
      <pubDate>Thu, 29 May 2025 00:00:00 +0000</pubDate>
      <guid>https://example.docsy.dev/zh/blog/2025/05/29/hello-wrold/</guid>
      <description>&lt;div id=&#34;asciinema-90de308de58e70e932c8b39ac101f7f5&#34;&gt;&lt;/div&gt;&#xA;&lt;link rel=&#34;stylesheet&#34; href=&#34;https://example.docsy.dev/css/asciinema-player.css&#34; /&gt;&#xA;&lt;script src=&#34;https://example.docsy.dev/js/asciinema-player.min.js&#34;&gt;&lt;/script&gt;&#xA;&lt;script&gt;&#xA;  AsciinemaPlayer.create(&#39;\/hello.cast&#39;, document.getElementById(&#39;asciinema-90de308de58e70e932c8b39ac101f7f5&#39;), {&#xA;    theme: &#39;dracula&#39;,&#xA;    loop: &#34;true&#34;,&#xA;    autoPlay: &#34;false&#34;,&#xA;    speed: &#34;2&#34;&#xA;  });&#xA;&lt;/script&gt;</description>
    </item>
    <item>
      <title>Step in Glibc Source Code</title>
      <link>https://example.docsy.dev/zh/blog/2025/05/29/step-in-glibc-source-code/</link>
      <pubDate>Thu, 29 May 2025 00:00:00 +0000</pubDate>
      <guid>https://example.docsy.dev/zh/blog/2025/05/29/step-in-glibc-source-code/</guid>
      <description>&lt;p&gt;在 Ubuntu 22.04 下，想要在 gdb 调试时 step in 到 &lt;code&gt;printf&lt;/code&gt; 函数内部，需要满足两个条件：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;glibc（libc）必须带有调试符号&lt;/strong&gt;，否则只能看到汇编或提示“no source available”。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;gdb 能找到 glibc 的源码路径&lt;/strong&gt;，这样才能显示 C 语言源码而不是汇编。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;步骤一安装调试符号和源码&#34;&gt;步骤一：安装调试符号和源码&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e6%ad%a5%e9%aa%a4%e4%b8%80%e5%ae%89%e8%a3%85%e8%b0%83%e8%af%95%e7%ac%a6%e5%8f%b7%e5%92%8c%e6%ba%90%e7%a0%81&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt update&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt install libc6-dbg glibc-source&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;h3 id=&#34;步骤二解压-glibc-源码&#34;&gt;步骤二：解压 glibc 源码&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e6%ad%a5%e9%aa%a4%e4%ba%8c%e8%a7%a3%e5%8e%8b-glibc-%e6%ba%90%e7%a0%81&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo tar -xf /usr/src/glibc/glibc-*.tar.xz -C /usr/src/glibc/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解压后源码路径通常为 &lt;code&gt;/usr/src/glibc/glibc-&amp;lt;version&amp;gt;/&lt;/code&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;步骤三配置-gdb-的源码路径映射&#34;&gt;步骤三：配置 gdb 的源码路径映射&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e6%ad%a5%e9%aa%a4%e4%b8%89%e9%85%8d%e7%bd%ae-gdb-%e7%9a%84%e6%ba%90%e7%a0%81%e8%b7%af%e5%be%84%e6%98%a0%e5%b0%84&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;glibc 在编译时源码路径通常是 &lt;code&gt;/build/glibc-*/&lt;/code&gt;，而你本地源码在 &lt;code&gt;/usr/src/glibc/glibc-&amp;lt;version&amp;gt;/&lt;/code&gt;。&lt;br&gt;&#xA;你需要告诉 gdb：&lt;strong&gt;把源码路径替换为本地实际路径&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;在 gdb 里输入：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;set substitute-path /build/glibc-*/ /usr/src/glibc/glibc-&amp;lt;version&amp;gt;/&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;请将 &lt;code&gt;&amp;lt;version&amp;gt;&lt;/code&gt; 替换为实际解压出来的目录名，比如 &lt;code&gt;2.35&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;注：上面的办法不管用。用下面的：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;directory /usr/src/glibc/glibc-2.35/&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;有，可以通过以下方法让 gdb 每次自动加载源码路径，无需每次手动设置：&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
