0%

今天继续学习csapp.

前一个lab: Csapp-Datalab 详解

本次lab, bomblab.

0. 说明

这个实验相当好玩, 题如其名, 类似一个拆炸弹的过程. 实验只给了一个可执行文件, 需要学生通过gdb反汇编这个可执行文件, “拆弹”共有6个阶段, 每个阶段需要用户输入一个特定的字符串, 一旦输入错误, 炸弹就会爆炸,程序终止.

做完整个实验, 学生可以学会如何使用gdb, 能够看懂 gcc所编译出来的汇编代码. 掌握阅读汇编代码的能力.

gdb的使用可参考: gdb 调试基础

本次解释, 均已代码注释+图形解释.

所有汇编代码, 可通过 objdump -d bomb获得.

阅读全文 »

一直用惯了IDE集成的debug工具, 忽略了gdb这个命令行debug工具. 而最近在做csapp的bomblab, 就不得不来学习它了. 所以特此记录.

1. 基本使用

考虑以下我们在IDE中要进行debug一般需要哪些功能?

  1. 设置断点(包含条件断点)
  2. 开启debug
  3. step in, step over, continue
  4. 观察某些值的变化, 打印数组value, 打印某个地址value
  5. 函数调用stack, 切换stack
  6. 临时更改某个变量,参数的值

下面讲解如何用gdb实现这些功能。

为了更方便讲解, 这里提前把所有常用命令贴出, 读者可不用一一记住, 在逐渐使用的过程中,自然就能形成记住了.

阅读全文 »

准备把csapp详细看一遍,所有lab都做一遍,加深理解。

本篇是datalab的个人解法,所以很可能不是最优解

原课程地址:http://www.cs.cmu.edu/afs/cs/academic/class/15213-f15/www/schedule.html

ok,现在就来一道道题说明。

0. 说明

datalab着重于让学生理解 数字(integer,float point)在bit level上的表示与操作。通过限制学生的操作集(如仅能使用 ~, |, +等此操作),让学生在bit level上思考问题。

阅读全文 »

本博文主要写给自己做记录,其它朋友也作为参考。

1. 更新源

安装任何linux发行版后(除非是国内开发的发行版,如deepin),第一步做的就是切换到国内源,manjaro也不例外:

1
sudo pacman-mirrors -i -c China -m rank

添加archlinux源:

1
2
3
4
suo /etc/pacman.conf
## 中国科学技术大学 (ipv4, ipv6, http, https)
[archlinuxcn]
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch

更新:

1
sudo pacman -Syyu
阅读全文 »

本篇博客仅写给自己做备份查看用。

背景:

  • 第n次放弃vscode又重新拾起,认真找了个系统视频看完后,现在感觉确实蛮香的;
  • 开虚拟机做linux开发,对于我的旧笔记本来说太难受了;
  • windows 的 linux子系统尝鲜。
阅读全文 »

一般来说,安装任何linux发行版后,我们做的第一步就是更换它的仓库源,然后才能愉快的下载各种东西。

这里就说一下ubuntu的通用换源方法:

1
2
3
4
5
6
# 备份源source.list
sudo cp /etc/apt/source.list /etc/apt/source.list.bak
# sed批量替换源地址
sudo sed -i 's/^\(deb\|deb-src\) \([^ ]*\) \(.*\)/\1 http:\/\/mirrors.aliyun.com\/ubuntu \3/' /etc/apt/sources.list
# update 生效
sudo apt update

ok, 就这么简单。

0. 前言

RubberTranslator是我在使用知云文献翻译和CopyTranslator两款软件后,基于javafx开发的一款文献辅助翻译软件。总体功能思想来自CopyTranslator,在此基础之上添加了自己觉得实用的功能。

开源地址:https://github.com/ravenxrz/RubberTranslator

安装:

本项目目前仅支持Windows平台,Linux之后会支持,但是Mac平台由于本人没有Mac电脑,所以无法支持,但是java是跨平台的,所以有mac电脑又有兴趣的朋友可自行打包。

  1. 点击Releases界面下载对应平台安装包即可。
  2. 考虑到github国内下载速度较慢,可从这里下载

注:请勿安装在有中文路径的目录下

点这里,看视频介绍

阅读全文 »

jpackage是java 14里面自带的打包工具,jpackage解决了java开发过程中得一个难题:分发自己的程序,需要客户电脑中已安装jre环境。有了jpackage,我们可以直接将java程序打包成安装包,具体来说:

  • Windows:exe,msi
  • Mac:dmg,pkg
  • Linux:deb,rpm

jpackage目前并不成熟,但是也算是可以使用。另外,虽然jpackage可以打包各个系统的安装包,但是在一个系统上只能打对应系统的安装包。比如在windows上,就只能打成exe或msi。

阅读全文 »