我在Ubuntu20.04LTS中编译了一个helloworld程序,我想在Simics中调试它,我在main上设置了一个断点,但是Simics不会崩溃。
我试着在QSP-x86中编译它,这个二进制文件可以工作。
根据我的理解,Simics可能会在main上崩溃,不管二进制程序最初的构建环境是什么。我不知道为什么它在我的案子里不成立。
以下是我的步骤:
步骤1:在Ubuntu 20.04中编译helloworld
$ cat a.c
#include <stdio.h>
int main()
{
printf("Hello world!\n");
return 0;
}
$ gcc -g a.c步骤2:将a.out复制到Simics项目根目录,并将其上传到QSP-x86 (firststeps.simics)
步骤3:
simics> enable-debugger
simics> add-symbol-file a.out
simics> bp.source_location.break main
simics> run
running>步骤4:从模拟串行控制台运行a.out
预期:应该触发main上的断点
但是got:根本没有触发断点
发布于 2021-12-22 08:27:34
看起来这是在目标上的Linux进程中运行的。要在用户级别调试软件,您需要启用OS感知,以便调试器能够跟踪该特定软件运行时的情况。当操作系统意识处于活动状态时,ASLR对用户级进程不重要,因为代码使用的虚拟地址在任何情况下都是相同的,即使物理页面被移动了。
一些事情,比如:
simics> enable-tracker
simics> board.software.enable-tracker
simics> add-symbol-file prog.elf context-query = "name='prog.elf'"
simics> bp.source_location.break main context-query = "name='prog.elf'"
simics> bp.list
simics> bp.show <<bp number>>
simics> board.serconsole.con.input "prog.elf\n"
simics> r
...这应该停止时,主要运行在程序中。
simics> bt
simics> list强制标记#IAmIntel
发布于 2021-11-05 10:23:48
我试图禁用ASLR并使用add-symbol-file运行relocation-address,它可以工作。
Simics:
simics> add-symbol-file pie-main.elf relocation-address = 0x555555554000
simics> bp.source_location.break main串行控制台:
# echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
# ./pie-mainhttps://stackoverflow.com/questions/69811845
复制相似问题