在我的Linux Mint上使用Bochs时出现了很奇怪的问题,按照http://www.cnblogs.com/long123king/p/3568575.html步骤

会提示:

symbol not found

因此,我决定使用gdb调试Bochs找出究竟发生了什么奇怪的问题。

1. 如何配置.conf.linux

添加-g -O0到CFLAGS/CXXFLAGS

2. 重新生成bochs程序

sudo make bochs

3. 参考:http://code.google.com/p/stl-debug/

添加对STL容器的调试支持

调试:

sudo gdb --args ~/latest_bochs/bochs/bochs -q -f bxrc_custom -rc script_debug_custom

4. 添加如下代码:

symbol_entry_t* context_t::get_symbol_entry(const char *symbol) const
{
if (m_rsyms.empty())
return 0; symbol_entry_t probe(0, symbol);
rsym_set_t::const_iterator iter;
for (std::set<symbol_entry_t*, lt_rsymbol_entry_t>::iterator it = m_rsyms.begin();
it != m_rsyms.end();
it++)
{
unsigned long start = (*it)->start;
char* name = (*it)->name;
if (strncmp(name, "start_kernel", strlen("start_kernel")) == 0)
{
int kkk = 0;
}
dbg_printf("0x%08X : %s\n", start, name);
continue;
}
iter=m_rsyms.find(&probe);
if(iter==m_rsyms.end()) // No symbol found
return 0;
return *iter;
}
++sym_name; char *ending = (sym_name + strlen(sym_name) - 1);
while ( isspace(*ending) && ending != sym_name)
{
*(ending--) = '\0';
} symbol_entry_t* sym = new symbol_entry_t(addr + offset, sym_name);

在int kkk=0;这一行设置断点,发现:

Breakpoint 1, context_t::get_symbol_entry (this=0x2860cf0, symbol=0x2860cd0 "start_kernel") at symbols.cc:213
213 int kkk = 0;
(gdb) info locals
kkk = 0
start = 3246113809
name = 0x3155e30 "start_kernel\r"
it = {_M_node = 0x3155e80}
probe = {name = 0x2536e70 "start_kernel", start = 0}
iter = {_M_node = 0x0}

怎么会多了一个"\r"呢,相信这就是问题的所在。

在add_symbol处设置断点,重新调试

Breakpoint 2, context_t::add_symbol (this=0x2860cf0, sym=0x2860fa0) at symbols.cc:226
226 m_syms.insert(sym);
(gdb) print sym.start
$1 = 0
(gdb) print sym.name
$2 = 0x2860fc0 "VDSO32_PRELINK\r"
(gdb)

确认问题。

解决方法:

在bx_dbg_symbol_command函数中添加如下代码:

    ++sym_name;

    char *ending = (sym_name + strlen(sym_name) - 1);
while ( isspace(*ending) && ending != sym_name)
{
*(ending--) = '\0';
} symbol_entry_t* sym = new symbol_entry_t(addr + offset, sym_name);

调试Bochs在Linux Mint下面symbol not found的问题的更多相关文章

  1. Linux Mint下编译Bochs

    我在Linux Mint命令行下输入sudo apt-get install bochs安装之后发现这个没有安装gui界面,使用也存在一些问题,所以直接删掉从官网下载代码自己编译安装. 给Linux ...

  2. Linux mint xfce 19 使用记录

    创建系统快照 创建系统快照是 Linux Mint 19 的重要建议,可以使用与更新管理器捆绑的 Timeshift 应用程序轻松完成创建与恢复. 这个阶段很重要,万一出现令人遗憾的事件,比如安装破坏 ...

  3. 在Linux Mint上安装node.js和npm

    1.安装Node.js 前端开发过程中,很多项目使用npm的http-server的模块来运行一个静态的服务器,我个人在Dell的笔记本上安装的是Linux Mint最新版本,所以想尝试一下在Linu ...

  4. 在Ubuntu和Linux Mint上安装Oracle JDK

    在Ubuntu和Linux Mint上安装Oracle JDK 使用下面的命令安装,只需一些时间,它就会下载许多的文件,所及你要确保你的网络环境良好: sudo add-apt-repository ...

  5. 安装Linux Mint

    1.尽量选择trusty的安装版本,kde和xfce不支持Win+..快捷键,推荐cinnamon:制作安装U盘后,选择非EFI模式启动:选择start Linux Mint(就是第一项): 2.In ...

  6. Linux Mint 17使用小结

    用过蛮多的linux系统 linux mint是我比较喜欢和常用的一个系统,装的是linux mint xfce 64位版本,在这里记录使用中遇到的一些问题及解决的方法,备忘,方便以后查看. 1.首先 ...

  7. Linux mint 18版本开启SSH服务

    linux mint 18版本默认是没有安装ssh server的 需要手动安装 安装ssh server: 此命令需要联网,会自动下载安装 安装之后看是否开始了ssh, 看到ssh-agent 和s ...

  8. Linux mint 14输入法问题

    新安装了Linux mint 14,莫名其妙地没有了中文输入法,安装并设置IBUS为默认输入法,但怎么也没反应.点击输入法图标,上面显示“No input window”,其实这不关输入法自身程序和设 ...

  9. linux mint 崩溃

    换完linux mint 今天突然崩溃了.出现如下错误 因为是双屏.一个屏幕显示一般,这么不重要.搜了一下,找到解决方案 解决办法 ctrl+atl+f1 login sudo apt-get ins ...

随机推荐

  1. How do I force my .NET application to run as administrator?

    How do I force my .NET application to run as administrator? You'll want to modify the manifest that ...

  2. linux 日志文件查看

    记录下日志中常用的日志查看命令. 1.  tail -n 10 -f  **.log 显示日志文件尾部10行日志,当有新日志产生,会追加显示. 2. tail 命令 现ff.sh中有如下信息: [ro ...

  3. HTML-参考手册: HTML 全局属性

    ylbtech-HTML-参考手册: HTML 全局属性 1.返回顶部 1. HTML 全局属性 New : HTML5 新属性. 属性 描述 accesskey 设置访问元素的键盘快捷键. clas ...

  4. Openstack组件部署 — Overview和前期环境准备

    目录 目录 前言 软件环境 Openstack 简介 Openstack 架构 Openstack Install Overview 创建Node虚拟机 环境准备 基础设置 Install OpenS ...

  5. 避开PCB假八层结构的温柔陷阱---浅谈六层板的叠层

    https://blog.csdn.net/qijitao/article/details/51505611 作者:王辉东   一博科技高速先生团队队员 在<PCB的筋骨皮>一文中,我们提 ...

  6. 阻抗匹配 及 SI9000 使用

    1. 阻抗匹配 1. 波长 * 频率 = 光速(3*10^8) 2. PCB走线什么时候需要做阻抗匹配? 不主要看频率,而关键是看信号的边沿陡峭程度,即信号的上升/下降时间,一般认为如果信号的上升/下 ...

  7. HDU 1724 Ellipse (自适应辛普森积分)

    题目链接:HDU 1724 Problem Description Math is important!! Many students failed in 2+2's mathematical tes ...

  8. activiti7启动流程实例,动态设置assignee人

    package com.zcc.activiti03; import org.activiti.engine.ProcessEngine;import org.activiti.engine.Proc ...

  9. 火狐foxyproxy + burp

    下载 火狐foxyproxy 和 burp 两个代理ip端口填写一致 如果对于公司有正向代理服务器,则需要配置burp的上游代理 对于IE浏览器的代理是windows操作系统的全局代理,在ie配置代理 ...

  10. 用html写博客好麻烦

    <!DOCTYPE html> .margin-test { margin-top:5px; margin-right:10px; margin-bottom:15px; margin-l ...