codex resume –last
AI
| 命令 |
解释 |
| codex resume –last |
打开最后一个历史 |
linux–系统命令
| 命令 |
解释 |
| sha1sun file |
查看文件的哈希值,如果不同说明文件修改过 |
| touch |
创建普通文件 |
| ==netstat -tunl | grep 端口号== |
查看端口号状态 |
| ==ps -ef | grep /oem/napp/bin/== |
查看进程状态 |
| ==sudo -S arp-scan -l== |
查询IP |
| ==sudo -S arp-scan -I enp59s0 -l== |
查询指定网口下的IP |
| ==sudo arp-scan -I wlp60s0 -l | grep -i == |
按mac地址查询指定网口下的IP |
| arp -a |
显示与你的PC连接的所有设备的IP和MAC地址信息,查询前先ping一下你需要的IP |
| sudo nautilus /usr/share/applications |
在里面找到要删除的文件进行删除就可以拉==ubuntu打开菜单删除文件== |
| cp -rf |
-rf是强制递归复制目录下的所有文件 |
| mv -f * 目标目录 |
移动指定目录文件到目标目录,重复则覆盖 |
| cat /proc/version |
查看版本信息 |
| strings OA1000 | grep A20 |
公司::查看当前固件版本号 |
| cat /etc/AnvizSeriesNumber |
查看序列号 |
| uname -a |
^^ |
| uname -m |
查看系统的位数 |
| ==df | df -h== |
查看文件系统的磁盘空间占用情况 |
| free -h |
查看系统内存的占用情况 |
| mount |
查看文件系统挂载状态 ro为只读,rw为读写 |
| sudo update-alternatives –config moudel |
查看并选择模块的版本优先级 |
| sudo update-alternatives –config gcc |
查看并选择使用的gcc版本 |
| sudo adduser username |
创建用户 |
| sudo tail -f /var/log/syslog |
查看系统日志 |
| rpcinfo -p |
显示正在运行的 RPC 服务及其使用的端口 |
| chown -R : |
更改指定目录的拥有者为指定用户 |
- RPC(Remote Procedure Call,远程过程调用)是一种协议,用于让程序能够调用另一台计算机上的程序或服务,就像调用本地程序一样。RPC 使得网络上的程序能够通过网络相互通信,执行远程操作。
- 工作原理
- 客户端和服务器:
- RPC 有两个主要组件:客户端和服务器。客户端发起请求,服务器处理请求并返回结果。
- 调用过程:
- 客户端调用一个代理或存根(stub),这个存根负责将调用转换为网络请求。
- 存根将参数序列化并通过网络发送到服务器。
- 服务器接收请求,调用相应的服务或函数,处理请求,然后将结果返回给客户端。
- 客户端的存根接收结果并将其反序列化,返回给原始调用者。
- 应用场景
- 分布式系统:在分布式应用中,RPC 常用于不同服务之间的通信。
- 网络服务:许多网络服务(如 NFS、LDAP 等)使用 RPC 作为通信机制。
- 微服务架构:在微服务架构中,各个服务之间的调用通常通过 RPC 进行。
Linux cmd 快速跳转
| 命令 |
解释 |
| Ctrl + A |
将光标移动到当前行的开头。 |
| Ctrl + E |
将光标移动到当前行的末尾。 |
| Ctrl + U |
从光标位置删除光标之前的所有内容。 |
| Ctrl + K |
从光标位置删除光标之后的所有内容。 |
| Ctrl + W |
删除光标之前的一个单词。 |
Linux other
system cmd
ufw
| 命令 |
解释 |
| sudo ufw allow 6004 |
打开指定端口 |
| sudo ufw allow from |
允许此IP访问所有的本机端口 |
| sudo ufw allow proto tcp from /24 to any port 22 |
允许指定的IP段访问特定端口 |
| sudo ufw delete allow 6004 |
删除指定端口 |
top
| 命令 |
解释 |
| p |
按cpu使用率排序 |
| M |
按内存使用率排序 |
| T |
按时间排序 |
| c |
显示详细信息 |
| s |
修改刷新时间,默认3秒刷新一次,按空格立即刷新 |
| 1 |
显示每个内核的cpu使用率 |
| u/U |
显示指定的用户 |
| h |
帮助 |
| H |
切换到线程图 |
| top -p PID |
进程ip,查看某个进程状态 |
mount
| cmd |
说明 |
| sudo mount | column -t |
查看当前挂载的文件信息 |
| sudo umount /media/you_directory |
卸载当前挂载点 |
| sudo mkdir /media/new_disk |
创建新的目录,用于挂载硬盘 |
| sudo mv /media/old_directory /media/new_directory |
如果目录存在重命名 |
| sudo mount /dev/sdb1 /media/new_directory |
重新挂载设备 |
| 自启动后硬盘重新挂载到指定目录 |
|
| sudo blkid |
确定硬盘的 UUID 或设备名称 |
| UUID=XXXX-YYYY /media/my_mount_point ext4 defaults 0 2 |
编辑 /etc/fstab 文件 没有则添加 |
| ^^ |
- -将 XXXX-YYYY 替换为您在步骤 1 中找到的 UUID。 |
| ^^ |
- -将 /media/my_mount_point 替换为您创建的挂载点目录。 |
| ^^ |
- -ext4 是分区的文件系统类型,您可以根据实际情况替换为 ntfs、vfat 等。 |
| ^^ |
- -defaults 是挂载选项,表示使用默认值。 |
| ^^ |
- -0 和 2 是用于备份和检查文件系统的选项。 |
|
|
df
| cmd |
说明 |
| df -h |
显示磁盘空间使用情况,包括已挂载的文件系统 |
| df -hT |
挂载的文件系统及其类型 |
|
|
free
| cmd |
说明 |
| free -h |
查看内存和交换区的信息 |
|
|
blkid
| cmd |
说明 |
| sudo blkid |
列出所有块设备及其 UUID 和文件系统类型 |
|
|
free
| lsblk |
说明 |
| lsblk |
列出所有块设备及其挂载点,这将显示一个树状结构,展示所有的存储设备及其挂载情况 |
|
|
mem
| cmd |
说明 |
| ipcs -m |
查看当前的共享内存段 |
| ipcs -m | grep /dev/shm |
查看当前系统的共享内存段(POSIX类型) |
| pmap PID |
pmap 用于显示进程的内存映射 |
kill
| cmd |
说明 |
| kill -9 PID |
杀掉进程 |
| killall name |
杀掉所有与name相符合的进程 |
pkill
| cmd |
说明 |
| pkill -f <name/path> |
杀掉指定路径下面的所有进程 |
file cmd
ls
| cmd |
说明 |
| 统计当前目录下有多少个文件 |
|
ls -l |
表示查找当前目录下 |
ls -lh |
查看文件大小 |
ls -lR |
表示查找当前目录及子目录下 |
ls -l dir |
表示在指定目录下查找 |
'^-' |
表示查找所有文件,可以指定文件查找 |
'^d' |
表示查找所有目录 |
wc -l |
表示统计输出信息的行数,经过前面的过滤就剩下个数了 |
| ==ls -lR dir*/ | grep ‘^-‘ | wc -l== |
查询当前目录及子目录下的所有文件 |
|
|
du
| cmd |
说明 |
| du -sh dir |
查看目录大小 |
| du -h –max-depth=1 | sort -hr | head -n 10 |
查看当前目录下最大的前 10 个目录 |
| -h |
-h 选项以人类可读的格式显示大小 |
| –max-depth=1 |
–max-depth=1 限制只显示当前目录的直接子目录 |
| sort -hr |
按大小进行排序,-h 选项表示按人类可读的格式排序,-r 表示逆序排列 |
| head -n 10 |
只显示前 10 个结果 |
|
|
strings
| cmd |
说明 |
| strings 命令::在指定文件(包括二进制文件)中查找可打印的字符串 |
|
| ==strings /root/tmp | grep -i libc== |
在tmp文件中查找小写(-i)的libc字符串 |
|
|
fonts
| cmd |
说明 |
| ls ~/.local/share/fonts/Unknown\ Vendor/TrueType/ |
自定义字体安装的位置 |
|
|
mkdir
| cmd |
说明 |
| mkdir -p /root |
在指定路径创建目录,没有该目录就进行补全 |
|
|
log
diff
| 命令 |
解释 |
| diff以逐行的方式,比较文本文件的异同处。如果指定比较目录,则会比较目录中相同的文件名的文件,但不会比较子目录 |
|
| diff file_name1 file_name2 参数 |
使用的语法示例 |
| -<行数> |
如-5,即指定要显示多少行的文本。此参数必须与-c或-u参数一并使用 |
| -a/-test |
diff预设只会逐行比较文本文件 |
| -b |
不检查空格子符的不同 |
| -B |
不检查空白行 |
| -c |
显示全部文本,不标出不同之处 |
| -H |
比较大文件时,可加快速度 |
| -i |
不检查大小写的不同 |
| -p |
若比较的文件为c语言的程序文件时,显示差异所在的函数名称 |
| -q |
仅显示有无差异,不显示详细的信息 |
| -r |
比较子目录中的文件 |
| -s |
若没有差异,仍然显示信息 |
| -S file_name |
在比较目录时,从指定的文件开始比较 |
| -t |
在输出时,将tab字符展开 |
| -T |
在每行前面加上tab字符以便对齐 |
| -u |
以合并的方式来显示文件内容的不同 |
| -v |
显示版本信息 |
| -w |
忽略全部的空格字符 |
| -W<宽度> |
在使用-y参数时,指定栏宽 |
| -x<file/dir> |
不比较选项中所指定的文件或目录 |
| -y |
以并列的方式显示文件的异同之处 |
| –lieft-column |
在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏显示该行内容 |
| –suppress-common-lines |
在使用-y参数时,仅显示不同之处 |
|
|
vim
| 命令 |
解释 |
| 在vim里面使用ctrl+s |
表示停止向终端输出 |
| 在vim里面使用ctrl+q |
表示恢复向终端输出 |
| w !sudo tee % |
给予权限并保存文件 !后面的命令表示在文件外部执行命令 |
|
|
so cmd
lib
| — | — |
| g++ -shared -o test.so -fPIC test.cpp | 把test.cpp文件编译为test.so共享库 |
ln
| 命令 |
解释 |
| ==ln== |
用来为文件进行链接(文件链接<动态库,静态库>) |
| ln file1.txt file2.txt |
将file1.txt链接到file2.txt。file2.txt -> file1.txt 硬链接 |
| -s |
对源文件建立符号链接(软链接),而非硬链接 |
|
|
rm
network cmd
port
| — | — |
| telnet ip port | 测试指定ip的指定端口是否可以连接 |
nmap
| — | — |
| nmap -sP /24 | 使用 nmap 扫描局域网: 假设你的网络是 /24 |
| nmap -sn /24 -oG - | awk ‘/Up$/{print $2}’ | -sn:执行 ping 扫描,检查哪些主机在线 |
| ^^ | -oG -:输出结果为 grepable 格式,并将结果发送到标准输出 |
| ^^ | awk ‘/Up$/{print $2}’:使用 awk 命令过滤输出,只打印状态为 “Up” 的行的第二列(即 IP 地址) |
ssh
| 命令 |
解释 |
| ssh -p port user@ip |
指定端口连接 |
| sshpass -p 密码 scp -r file/dir root@dev_ip:dev_save_dir |
传文件到dev |
| ssh -i ~/ -p 9566 @ |
使用密钥连接到指定端口 |
scp
| 命令 |
解释 |
| scp -i /path/to/private_key -P port_number /path/to/local_file username@hostname:/path/to/remote_directory |
发送文件到指定的ip服务器, 使用密钥和指定端口 |
| scp -i /path/to/private_key -P port_number -r /path/to/local_file username@hostname:/path/to/remote_directory |
发送目录到指定的ip服务器, 使用密钥和指定端口 |
rsync
| 命令 |
解释 |
| rsync |
同步文件到远程 |
| -av |
归档模式(保留文件属性)并显示详细输出 |
| -e |
指定远程 Shell 命令,用于自定义 SSH 连接 |
| ssh -p 5099 |
通过 -p 指定 SSH 端口(默认为 22) |
| -i wt_ssh.key |
通过 -i 指定私钥文件路径(如 .pem 或 id_rsa)。 |
| 源路径 |
本地需同步的目录或文件 |
| 目标路径 |
远程服务器的目录 |
- example
rsync -av -e “ssh -p 9566 -i ~/“ @:/
MDNS avahi
| — | — |
| avahi-browse -a -r| 查看mdns自发现协议名称和详细信息 |
| avahi-browse -rt _matter._tcp| 查看mdns _matter._tcp |
DNS
| — | — |
| dig google.com | 测试 DNS 解析时间(转换 IP 时间) |
telnet
| — | — |
| telnet ip | 连接到指定ip地址后台 |
nmcli
| — | — |
| nmcli device status | 快速查看所有网络接口的==物理状态==和连接概况 |
| nmcli device show | 显示指定网络设备的==详细底层信息== |
| nmcli connection show | 列出所有已保存的==网络配置方案== |
| nmcli networking connectivity | 网络管理功能状态 |
route
| — | — |
| sudo ip route replace default via dev enp59s0 | 设置路由为enp59s0网卡,地址为.1 |
tcpdump
| — | — |
| tcpdump -i ethsta0 -s 0 -w wlan0.pcap | 抓取无线网卡 wlan0 上的全部数据包,并把完整包内容保存到文件 waln0.pcap 里 |
other
grep
| cmd |
说明 |
| -i |
忽略大小写进行匹配 |
| -v |
反向查找,只打印不匹配的行 |
| -n |
显示匹配行的行号 |
| -r |
递归查找子目录中的文件 |
| -l |
只打印匹配的文件名 |
| -c |
只打印匹配的行数 |
| > |
==awk== |
| awk ‘{print $n,$m}’ |
只打印第n和m列的数据,默认空格和tab为分割符 |
| awk -F “/“ ‘{print $n,$m}’ |
以/为分割符,只打印第n和m列的数据 |
| grep -rn “name” . |
递归查找当前目录中是否有name存在则输出行号 |
find
- -path路径不能加入结尾的/
- -path路径和find路径保持一致
| cmd |
说明 |
| sudo find / -path “/home” -prune -o -name “win*” -print |
跳过指定路径 |
| sudo find / ( -path “/home” -o -path “/media” ) -prune -o -name “win*” -print |
跳过多个路径 |
| -path |
指定要跳过的目录 |
| -prune |
表示不进入该目录 |
| -o |
表示逻辑“或” |
| -name |
“*.txt”: 查找以 .txt 结尾的文件 |
| -print |
打印找到的文件 |
linux–压缩
zip
| cmd |
说明 |
| 命令 |
解释 |
| zip temp.zip text.txt |
将text.txt文件压缩到temp.zip |
| zip -r name.zip |
将当前目录下的所有文件和文件夹全部压缩成name.zip文件 |
| zip -r name.zip youdir |
将youdir目录下的所有文件压缩到name.zip中 |
| zip -r name.zip dir1 dir2 … |
将dir1 dir2 … 目录下的所有文件压缩到name.zip中 |
| zip -d name.zip name.txt |
删除name.zip压缩文件中的name.txt文件 |
| zip -m name.zip name.cpp |
向压缩文件name.zip添加name.cpp文件,并删除原始文件 |
| zip -u name.zip name.cpp |
向压缩文件name.zip添加name.cpp文件 |
| zip -P password name.zip . |
以加密的方式进行压缩 |
| zip -r -P password name.zip . |
以递归且加密的方式进行压缩 |
| -q |
在压缩的时候不显示命令的执行过程 |
|
|
dpkg
| cmd |
说明 |
| -i |
安装dpkg包 |
| -deb -b dir1 dir2 |
将解压到dir1下面的所有内容重新打包为deb包,放在dir2 |
|
|
linux–解压
unzip
| cmd |
说明 |
| 命令 |
解释 |
| unzip name.zip -d dir |
解压zip类型文件到指定目录 |
| -t |
测试压缩包有无损坏,但不解压 |
| -n |
解压时并不覆盖已经存在的文件 |
| -o |
解压时覆盖已存在的文件,并且不需要用户确认 |
| -x 文件列表 |
解压文件,但不包括文件列表中指定的文件 |
| -v |
查看压缩文件的详细信息,并不解压压缩包 |
|
|
dpkg
| cmd |
说明 |
| -r |
删除deb包 |
| -X pack dir |
将deb包解压到指定目录下 |
tar.xz
| cmd |
说明 |
| -x |
解压缩(extract) |
| -f |
指定要解压的文件名 |
| -v |
显示详细输出(verbose),列出解压的文件 |
| -z |
通过 gzip 解压(用于 .tar.gz 或 .tgz 文件) |
| -j |
通过 bzip2 解压(用于 .tar.bz2 文件) |
| -J |
通过 xz 解压(用于 .tar.xz 文件) |
| -C |
指定解压目标目录 |
| tar -xf archive.tar |
基本解压 |
| tar -xzf archive.tar.gz |
解压 gzip 压缩的 tar 文件 |
| tar -xjf archive.tar.bz2 |
解压 bzip2 压缩的 tar 文件 |
| tar -xJf archive.tar.xz |
解压 xz 压缩的 tar 文件 |
| tar -xf archive.tar -C /path/to/directory |
解压到指定目录 |
|
|
linux–WIFI
!!! question 1. wpa_supplicant是什么?
是一个项目开源源码,被谷歌修改后加入了Andriod移动平台,它实现了station对无线网络进行管理和控制的功能,wpa_supplicant是linux系统下一个非常强大的无线网卡管理程序。
!!!
!!! question 2. wpa_supplicant有什么用?
主要用来加密的,主要支持OPEN,WEP,WPA(TKIP),WPA2(AES)等类型的无线协议与加密认证
!!!
!!! question 3. wpa_supplicant工作内容?
通过socket(不管是wpa_supplicant与上层还是wpa_supplicant与驱动都采用socket通讯)与驱动交互上报数据给用户,而用户可以通过socket发送命令给wpa_supplicant调用驱动来对WIFI芯片操作。
!!!
!!! question 4. wpa_supplicant三个成果。
- 是WIFI驱动和用户的中转站
- 对协议的支持
- 加密认证的支持
!!!
!!! question 5. wpa_cli与wpa_supplicant关系
经过编译后的wpa_supplicant源程序可以看到两个主要的可执行工具:wpa_supplicant和wpa_cli。
wpa_supplicant是核心程序,它和wpa_cli的关系就是服务端和客户端的关系:后台运行wpa_supplicant,使用wpa_cli来搜索,设置和连接网络。
换句话说:
wpa_supplicant工具包含wpa_supplicant和wpa_cli这两个程序,其中wpa_supplicant程序作为服务端在后台运行,服务wpa_cli客户端的请求,从而实现WIFI的配置连接。
!!!
| cmd |
说明 |
| ==iwlist <wifi?>== |
|
| 命令 |
解释 |
| sudo iwlist wlan0 scan |
通过你的wifi网卡名来扫描附近开启的wifi,必须以root身份运行 |
| cd etc/NetworkManager/system-connections/ |
|
| 这个目录下就是linux系统连接成功的wifi,打开你想查看的wifi文件其中psk即为该wifi的密码 |
|
| ==wpa<wpa是一个linux自带的wifi管理工具>== |
|
| ==wpa_supplicant 服务器?== |
|
| pgrep -af wpa_supplicant |
查看wpa_supplicant服务器是否启动 |
| wpa_supplicant -B -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf -d |
启动wpa_supplicant服务器 |
| -B |
在后台运行守护进程 |
| -D |
驱动程序的名称 |
| -i |
指定网络接口名称 |
| -c |
指定配置文件 |
| -d |
增加调试信息 |
| /etc/wpa_supplicant.conf |
配置文件内容 例:ctrl_interface=/var/run/wpa_supplicant update_config=1 机器的wifi密码也在里面 |
| ==wpa_cli 客户端?== |
|
| wlan0 |
wlan0是无线接口名字,要写入自己的无线接口名字,要拥有root权限 |
| ifconfig wlan0 down |
关闭WIFI接口 |
| ifconfig wlan0 up |
打开WIFI接口 |
| wpa_cli -i wlan0 -p /var/run/wpa_supplicant |
使得客户端连接服务端 |
| -p |
指定与wpa_supplicant通讯的文件 |
| wpa_cli -i wlan0 terminate |
终止wpa_supplicant后台服务程序 |
| wpa_cli -i wlan0 status |
查看当前无线网卡的状态 |
| wpa_cli -i wlan0 scan |
搜索附近wifi网络 |
| wpa_cli -i wlan0 scan_results |
打印搜索wifi网络结果 |
| wpa_cli -i wlan0 add_network |
添加一个网络连接 |
| ==wifi加密模式为wpa加密== |
|
| wpa_cli -i wlan0 set_network n ssid ‘“name”‘ |
写入要连接的wifi的名字,n为第n个网络连接 |
| wpa_cli -i wlan0 set_network n psk ‘“password”‘ |
写入要连接的wifi的密码,n为第n个网络连接 |
| ==wifi加密模式为wep加密== |
|
| wpa_cli -i wlan0 set_network n ssid ‘“name”‘ |
写入要连接的wifi的名字,n为第n个网络连接 |
| wpa_cli -i wlan0 set_network n key_mgmt NONE |
设置密码管理方式 |
| wpa_cli -i wlan0 set_network n wep_key0 ‘“password”‘ |
写入要连接的wifi的密码,n为第n个网络连接 |
| ==wifi加密模式为ess无加密== |
|
| wpa_cli -i wlan0 set_network n ssid ‘“name”‘ |
写入要连接的wifi的名字,n为第n个网络连接 |
| wpa_cli wlan0 set_network n key_mgmt NONE |
设置密码管理方式 |
| wpa_cli -i wlan0 list_network |
查看所有保存的连接 |
| wpa_cli -i wlan0 enable_network n |
连接第n个wifi网络 |
| wpa_cli -i wlan0 reconnect |
重新连接 |
| wpa_cli -i wlan0 disable_network n |
断开第n个连接的wifi网络 |
| wpa_cli -i wlan0 remove_network n |
移除第n个wifi |
| ==DHCP== |
|
audio/video
FFmpeg
| 命令 |
解释 |
| ffmpeg -i input.mp4 -pix_fmt yuv420p -c:a copy -movflags +faststart output.mp4 |
把input.mp4转换为yuv420p格式输出到output.mp4 <linux转windows> |
| ffmpeg -i input.mp4 |
获取完整音视频信息 |
| ffprobe -v error -show_streams -select_streams a -of json input.mp4 |
使用ffprobe获取结构化信息 |
FFplay
| 命令 |
解释 |
| ffplay -f v4l2 -i /dev/video0 |
播放摄像头画面 |
| ffplay -f s16le -ar 48000 -ac 1 test.pcm |
播放pcm音频文件 |
| ffplay -ar 48000 -ac 1 test.ogg |
播放ogg音频文件 |
opusenc
| 命令 |
解释 |
| opusenc –raw –raw-rate 48000 –raw-chan 1 test.opus out1.ogg |
opus to ogg |
aplay
| 命令 |
解释 |
| aplay -v audio.wav |
输出 PCM 配置详情 |
| aplay -c 1 -r 8000 -f S16_LE -D hw:0,0 test.pcm |
使用hw设备播放,单通道, 采样率8000,16位小端格式 |
build
make
| 命令 |
解释 |
| make VERBOSE=1 |
详细输出 |
GDB
!!! warning 注意
1 2 3 4 5 6 7 8 9
| 在程序有参数时调试如下: 先 gdb 文件名 进入后在set args 参数; 然后正常操作就好啦!
gdb -args ./文件名 所需运行参数 watch //观测点指令 watch a //当变量a的值发生变化时,中断程序执行 rwatch a //当a的值被读取时,中断表达式的执行
|
!!!
GDB命令
| 命令 |
解释 |
| h |
help:查看命令帮助,在gdb中输入help+命令 |
| b |
设置断点 b num |
| r |
开始运行程序,程序会在遇到断点的地方停下来,如果没有断点,程序会一直运行下去 |
| n |
执行当前语句,如果该语句为函数调用,不会进入函数内部 |
| s |
进入有源码的函数内部执行第一条语句 |
| c |
继续程序的运行,直到遇到下一个断点 |
| p |
显示变量的值,如p name 表示显示name当前的值 |
| l |
查看源代码(list-n,从第n行开始查看代码,list+函数名:查看具体函数) |
| q |
退出GDB环境 |
| d |
删除第num个断点, d num |
| set |
设置变量的值 |
| start |
单步执行,运行程序,停在第一行执行代码 |
| finish |
结束当前函数,返回函数调用点 |
| watch |
被设置观察点的变量发生修改时,打印显示 |
| i watch |
显示观察点 |
| display |
追踪查看具体变量值 |
| undisplay |
取消追踪观察变量 |
| info breakpoints |
查看当前设置的所有断点 |
| run argv[1] argv[2] |
调试时命令行传参 |
打印内存的值
==x/“nfu” “addr”==
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| n:输出单元的个数 f:是输出格式。 x:按 16 进制形式输出, a:按 16 进制格式显示变量 o:按 8 进制形式输出, t:按 2 进制形式输出, u:按 无符号10 进制的形式输出。 i:指令地址格式 c:按 字符 格式表示变量 f:按 浮点数 格式显示变量 u:表明一个地址单元的长度。 b:表示单字节, h:表示双字节, w:表示四字节, g:表示八字节
|
addr:要查看的对象的地址 如:&name
!!! example 使用示例
例:
- x/8xb &name
- x/8oh &name
- x/8tw &name
解:
- 以16进制的形式查看name,共打印8个大小为b的信息
- 以8进制的形式查看name,共打印8个大小为h的信息
- 以2进制的形式查看name,共打印8个大小为w的信息
!!!
Scrcpy 手机镜像
| 命令 | 解释 |
| :— | : —|
| sudo apt install scrcpy | 安装 |
| scrcpy | 运行|
| | 添加到同一个组内 |
C++ & C
!!! tip 16进制数只是10进制数的一种表现方式,其存储的实际还是10进制数。所以,定义变量就是整形!
1 2 3 4 5 6 7 8 9 10
| 在头文件声明即可 #ifdef __cplusplus extern "C" { #endif
c函数的声明
#ifdef __cplusplus } #endif
|
解释::cpp对函数的重载处理。在c++中,为了支持重载机制,在编译生成的汇编码中,要对函数书的名字进行一些处理。而在c中,只是简单的函数书名字,不会加入其它信息。也就是说:C++和C对产生的函数名字的处理是不一样的。
c为了在C++代码中调用用C写好的库文件,就需要用extern”C”来告诉编译器:这是一个用C写好的库文件,请用C的方式来链接它们。
!!!
C++
| cmd |
说明 |
| cout << hex << val |
hex::以16进制输出结果 |
| cout << oct << val |
oct::以8进制输出结果 |
|
|
C
| cmd |
说明 |
| %x |
按16进制输入数据 |
| %0 |
按8进制输出数据 |
| %.*s |
*用来指定宽度,对应一个整数。.(点)与后面的数结合起来是指定必须输出这个宽度 |