调试Bochs在Linux Mint下面symbol not found的问题
在我的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的问题的更多相关文章
- Linux Mint下编译Bochs
我在Linux Mint命令行下输入sudo apt-get install bochs安装之后发现这个没有安装gui界面,使用也存在一些问题,所以直接删掉从官网下载代码自己编译安装. 给Linux ...
- Linux mint xfce 19 使用记录
创建系统快照 创建系统快照是 Linux Mint 19 的重要建议,可以使用与更新管理器捆绑的 Timeshift 应用程序轻松完成创建与恢复. 这个阶段很重要,万一出现令人遗憾的事件,比如安装破坏 ...
- 在Linux Mint上安装node.js和npm
1.安装Node.js 前端开发过程中,很多项目使用npm的http-server的模块来运行一个静态的服务器,我个人在Dell的笔记本上安装的是Linux Mint最新版本,所以想尝试一下在Linu ...
- 在Ubuntu和Linux Mint上安装Oracle JDK
在Ubuntu和Linux Mint上安装Oracle JDK 使用下面的命令安装,只需一些时间,它就会下载许多的文件,所及你要确保你的网络环境良好: sudo add-apt-repository ...
- 安装Linux Mint
1.尽量选择trusty的安装版本,kde和xfce不支持Win+..快捷键,推荐cinnamon:制作安装U盘后,选择非EFI模式启动:选择start Linux Mint(就是第一项): 2.In ...
- Linux Mint 17使用小结
用过蛮多的linux系统 linux mint是我比较喜欢和常用的一个系统,装的是linux mint xfce 64位版本,在这里记录使用中遇到的一些问题及解决的方法,备忘,方便以后查看. 1.首先 ...
- Linux mint 18版本开启SSH服务
linux mint 18版本默认是没有安装ssh server的 需要手动安装 安装ssh server: 此命令需要联网,会自动下载安装 安装之后看是否开始了ssh, 看到ssh-agent 和s ...
- Linux mint 14输入法问题
新安装了Linux mint 14,莫名其妙地没有了中文输入法,安装并设置IBUS为默认输入法,但怎么也没反应.点击输入法图标,上面显示“No input window”,其实这不关输入法自身程序和设 ...
- linux mint 崩溃
换完linux mint 今天突然崩溃了.出现如下错误 因为是双屏.一个屏幕显示一般,这么不重要.搜了一下,找到解决方案 解决办法 ctrl+atl+f1 login sudo apt-get ins ...
随机推荐
- 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 ...
- linux 日志文件查看
记录下日志中常用的日志查看命令. 1. tail -n 10 -f **.log 显示日志文件尾部10行日志,当有新日志产生,会追加显示. 2. tail 命令 现ff.sh中有如下信息: [ro ...
- HTML-参考手册: HTML 全局属性
ylbtech-HTML-参考手册: HTML 全局属性 1.返回顶部 1. HTML 全局属性 New : HTML5 新属性. 属性 描述 accesskey 设置访问元素的键盘快捷键. clas ...
- Openstack组件部署 — Overview和前期环境准备
目录 目录 前言 软件环境 Openstack 简介 Openstack 架构 Openstack Install Overview 创建Node虚拟机 环境准备 基础设置 Install OpenS ...
- 避开PCB假八层结构的温柔陷阱---浅谈六层板的叠层
https://blog.csdn.net/qijitao/article/details/51505611 作者:王辉东 一博科技高速先生团队队员 在<PCB的筋骨皮>一文中,我们提 ...
- 阻抗匹配 及 SI9000 使用
1. 阻抗匹配 1. 波长 * 频率 = 光速(3*10^8) 2. PCB走线什么时候需要做阻抗匹配? 不主要看频率,而关键是看信号的边沿陡峭程度,即信号的上升/下降时间,一般认为如果信号的上升/下 ...
- HDU 1724 Ellipse (自适应辛普森积分)
题目链接:HDU 1724 Problem Description Math is important!! Many students failed in 2+2's mathematical tes ...
- activiti7启动流程实例,动态设置assignee人
package com.zcc.activiti03; import org.activiti.engine.ProcessEngine;import org.activiti.engine.Proc ...
- 火狐foxyproxy + burp
下载 火狐foxyproxy 和 burp 两个代理ip端口填写一致 如果对于公司有正向代理服务器,则需要配置burp的上游代理 对于IE浏览器的代理是windows操作系统的全局代理,在ie配置代理 ...
- 用html写博客好麻烦
<!DOCTYPE html> .margin-test { margin-top:5px; margin-right:10px; margin-bottom:15px; margin-l ...