摘要:
答案1:关掉最大打印限制 https://blog.csdn.net/qq_34347375/article/details/123216780 答案2:打印数组中任意连续值 https://wizardforcel.gitbooks.io/100-gdb-tips/content/print-co 阅读全文
摘要:
问题:使用 make run 可以成功编译并运行,使用 bear make run 就会报错 1. 尝试 使用 bear make clean,再用 bear make run --不可行2. 尝试谷歌搜索报错信息: ==20704==ASan runtime does not come first 阅读全文
摘要:
struct { uint32_t opcode1_0 : 2; uint32_t opcode6_2 : 5; uint32_t rd : 5; uint32_t funct3 : 3; uint32_t rs1 : 5; int32_t simm11_0 :12; } i; 以上是PA中暂时不明 阅读全文
摘要:
在Linux中,调试器实现的主要构建块是 ptrace 系统调用 虽然现代调试器非常复杂,但是基础的调试器其实很简单,它们仅仅使用了OS和编译器、链接器提供的很少的服务。 Stepping through the code of a process (感觉这些内容跟完成PA暂时没有关系,以后在说) 阅读全文
摘要:
调试器有两个基石:1. 断点 2. 访问被调试程序的内存 Software interrupts 中断:为了处理异步事件(比如 IO 和 时钟) 硬件中断:包含1. 一个专用的电子信号 2. 一个特别的“反应电路”会回应这个电子信号。当电路检测到这个电子信号,就会停下CPU,保存它的状态,接着跳入一 阅读全文
摘要:
https://eli.thegreenplace.net/2011/01/27/how-debuggers-work-part-2-breakpoints 阅读全文
摘要:
调试其实就是从观测到的failure一步一步回溯寻找fault的过程, 找到了fault之后, 我们就很快知道应该如何修改错误的代码了. 但从上面的例子也可以看出, 调试之所以不容易, 恰恰是因为: fault不一定马上触发error 触发了error也不一定马上转变成可观测的failure err 阅读全文
摘要:
Fault: 实现错误的代码, 例如if (p = NULL) Error: 程序执行时不符合预期的状态, 例如p被错误地赋值成NULL Failure: 能直接观测到的错误, 例如程序触发了段错误 来源:https://nju-projectn.github.io/ics-pa-gitbook/i 阅读全文
摘要:
watch: 借助观察断点可以监控程序中某个变量或者表达式的值,只要发生改变,程序就会停止执行。 rwatch 命令:只要程序中出现读取目标变量(表达式)的值的操作,程序就会停止运行; awatch 命令:只要程序中出现读取目标变量(表达式)的值或者改变值的操作,程序就会停止运行。 来源:http: 阅读全文
摘要:
来源:https://www.bilibili.com/read/cv16318897 阅读全文