C和gdb调试

开启coredump #如果该命令的返回值是0,则表示不开启coredump ulimit -c # 开启coredump ulimit -c unlimited 准备c文件 #include<stdio.h> void crash() { char * p = NULL; *p = 0; } int main(){ printf("hello world 1"); int phone [4]; phone[232] = 12; crash(); return 0; } 编译执行 gcc -g hello.c -o hello ./hello 之后程序崩溃,产生core文件。 gdb分析 gdb 启动的二进制文件 core文件 gdb ./hello ./core 之后输入: bt full 可以查看到更详细的信息 ➜ c-sandbox gdb ./hello ./core GNU gdb (Raspbian 7.12-6) 7.12.0.20161007-git Copyright (C) 2016 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "arm-linux-gnueabihf". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from ./hello...done. [New LWP 25571] Core was generated by `./hello'. Program terminated with signal SIGSEGV, Segmentation fault. #0 0x0001045c in crash () at hello.c:6 6 *p = 0; (gdb) bt full #0 0x0001045c in crash () at hello.c:6 p = 0x0 #1 0x00010490 in main () at hello.c:13 phone = {66328, 0, 0, 0}

2022-05-28 12:35:26 · 1 min · Eddie Wang

Tmux 常见问题以及解决方案

oh my tmux 关闭第二键ctrl-a ctrl-a可以用来移动光标到行首的,不要作为tmux的第二键 set -gu prefix2 unbind C-a Tmux reload config :source-file ~/.tmux.conf tmux 显示时间 ctrl b + t tmux从当前目录打开新的窗口 bind '"' split-window -c "#{pane_current_path}" bind % split-window -h -c "#{pane_current_path}" bind c new-window -c "#{pane_current_path}"

2022-05-28 12:30:58 · 1 min · Eddie Wang

hugo博客增加mermaid 绘图插件

step1 在themes/YourTheme/layouts/partials/extend_footer.html 的最后追加如下内容 {{if .Store.Get "hasMermaid" }} <script type="module"> import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.esm.min.mjs'; mermaid.initialize({ startOnLoad: true }); </script> {{end }} step2: 在layouts/_default/_markup/render-codeblock-mermaid.html <pre class="mermaid"> {{- .Inner | htmlEscape | safeHTML }} </pre> {{ .Page.Store.Set "hasMermaid" true }} 在blog中增加如下代码 pie title French Words I Know "Merde" : 50 "Oui" : 35 "Alors" : 10 "Non" : 5 sequenceDiagram title French Words I Know autonumber Alice->>Bob: hello Bob-->>Alice: hi Alice->Bob: talking

2022-05-27 11:49:44 · 1 min · Eddie Wang

klogg: 目前我最喜欢的日志查看工具

项目信息 github地址 https://github.com/variar/klogg 1. 安装 klogg是个跨平台软件,windows, mac, linux都可以安装。具体安装方式参考github项目地址 2. 界面布局 文件信息栏 日志栏 过滤器设置栏 过滤后的日志显示栏 3. 文件加载 klogg支持多种方式加载日志文件 将日志文件拖动到klogg中 直接将常见的压缩包文件拖动到klogg中,klogger将会自动将其解压后展示 支持从http url地址下载日志,然后查看 支持从剪贴板复制日志,然后展示 4. 过滤表达式 因为klogg支持正则过滤,所以他的功能就非常强悍了。 逻辑表达式 表达式 例子 备注 与 and “open” and “close” 包含open,并且包含close 或 or “open” or “close” 包含open, 或者 close 非 not not(“open”) 不包含open 与或非同时支持复杂的运算,例如包含open 但是不包含close: "open" and not("close") 5. 快捷方式 klogg的快捷方式很多参考了vim, vim使用者非常高兴。 键 动作 arrows 上下或者左右移动 [number] j/k 支持用j/k上下移动 h/l 支持用h/l左右移动 ^ or $ 滚动到某行的开始或者结尾 [number] g 跳到对应的行 entered G 跳到第一行 Shift+G 跳到最后一行 Alt+G 显示跳到某一行的对话框 ’ or " 在当前屏幕快速搜索 (forward and backward) n or N 向前或者向后跳 * or . search for the next occurrence of the currently selected text / or , search for the previous occurrence of the currently selected text f 流的方式,类似 tail -f m 标记某一行,标记后的行会自动加入过滤结果中 [ or ] 跳转到上一个或者下一标记点 + or - 调整过滤窗口的尺寸 v 循环切换各种显示模式- Matches: 只显式匹配的内容- Marks: 只显式标记的内容- Marks and Matchs:显示匹配和标记的内容 (Marks and Matches -> Marks -> Matches) F5 重新加载文件 Ctrl+S Set focus to search string edit box Ctrl+Shift+O 打开对话框去选择其他文件 参考 https://github.com/variar/klogg/blob/master/DOCUMENTATION.md

2022-04-13 19:41:53 · 1 min · Eddie Wang

macbook pro 使用1664天的感受

我之前写过一篇文章《macbook pro使用三年后的感受》,今天这篇文章是用4.5年的感受。 再次梳理一下,中间遇到过的问题 蝴蝶键盘很早有有些问题了,最近疫情在家,键盘被用坏了,J键直接坏了。只能外接键盘来用 屏幕下方出现淡红色的纹路,不太明显,基本不影响使用 中间我自己给macbook换过一次电池,换电池之前只要不插电,macbook很容易就关机了 风扇经常转,噪音有点吵,我已经觉得无所谓了 17年买这台电脑的时候,应该是9400左右。配置应该是最低配的 i5双核2.3Ghz, 8G内存,128硬盘的。 有些人可能惊讶,128G的硬盘怎么能够用的。但是我的确够用,我的磁盘还有将近50G的剩余空间呢。 我不是视频或者影音工作者,用的软件比较少。整个应用程序所占用的空间才4个多G。剩下的文稿可能大部分是代码。 由于我我基本上都是远程用ssh连上nuc上开发,所以mac上的资料更少。 但是macbook键盘坏了这个问题,是不能忍的。偶尔要移动办工的时候,不可能再带个外接键盘吧。 是时候准备和陪伴我4.5年的电脑说再见了。 本来想买14寸的macbook pro m1的,但是重量的增加以及很丑的刘海也是我不能忍的。 所以我觉得我会买一台轻便点的windows笔记本,而且windows还有一个很吸引我的点,就是linux子系统。这个linux子系统,要比mac的系统更加linux。 各位同学有没有推荐的windows的轻便笔记本呢?

2022-04-04 21:29:13 · 1 min · Eddie Wang

github clone加速

我有一个github仓库,https://github.com/wangduanduan/opensips, 这个源码比较大,git clone 比较慢。 我们使用https://www.gitclone.com/提供的加速服务。 # 从github上clone git clone https://github.com/wangduanduan/opensips.git # 从gitclone上clone # 只需要在github前面加上gitclone.com/ # 速度就非常快,达到1mb/s git clone https://gitclone.com/github.com/wangduanduan/opensips.git 但是这时候git repo的仓库地址是 https://gitclone.com/github.com/wangduanduan/opensips.git,并不是真正的仓库地址,而且我更喜欢用的是ssh方式的远程地址,所以我们就需要修改一下 git remote set-url origin git@github.com:wangduanduan/opensips.git

2022-03-29 09:17:23 · 1 min · Eddie Wang

[未完成] 浪潮之底系列 - tcpdump的故事

故事发生在1988年的美国。这一年互联网的始祖网络,阿帕网已经诞生了将近20年。而我们所熟知的linux将在三年后,也就是1991才出现。 在1988年,这时候的互联网只有阿帕网。 然而这个网络并没有想象中的那么好用,他还存在很多问题,而且也经常崩溃。 解决阿帕网崩溃的这个问题,落到了LBL(Lawrence Berkeley National Laboratory实验室的肩上。 这个实验室有四个牛人,他们同时也是tcpdump的发明人。 Van Jacobson Sally Floyd Vern Paxson Steve McCanne 这个实验室主要的研究方向是TCP拥塞控制、BSD包过滤、VoIP等方向。 为了解决阿帕网经常崩溃的问题,就必须要有一个好用的抓包工具。 本着不重复造轮子的原则,这时候也已经又了一个叫做etherfind的工具,但是这个工具有以下的问题 包过滤的语法非常蹩脚 协议编解码能力非常弱 性能也非常弱 总之一句话,他们认为etherfind不行。 工欲善其事,必先利其器。所以他们就想创造一个新的工具。这个工具必须要有以下的特征 能够从协议栈底层过滤包 把高级的过滤语法能够编译的底层的代码 能够在驱动层进行过滤 创建了一个内核模块叫做 Berkeley Packet Filter(BPF) 参考 https://baike.baidu.com/item/ARPAnet/3562284

2022-03-27 17:33:18 · 1 min · Eddie Wang

为什么我又开始使用Firefox浏览器

对于浏览器,我有以下几个需求 能在所有平台上运行,包括mac, windows, linux, ios, 安卓 能够非常方便的同步浏览器之间的数据,例如书签之类的 能够很方便的安装扩展程序,无需翻墙 按照这些条件,只有Firefox能否满足。 当然安装使用Firefox的时候,也出现了几小插曲。 macos 我在ios上登录Firefox上的账户,在MacOS的Firefox却无法登陆,查了才发现,原来FireFox的账号分为国内版和国际版,两者之间数据不通,所以在macos上,也要登陆国内版本,就是带有火狐通行证的登陆页面。 需要在同步页面点击切换至本地服务。 linux/manjaro manjaro上安装的firefox居然没有切换本地服务这个选项,后来发现这个浏览器上没有附加组件管理器所以需要去 http://mozilla.com.cn/moz-addon.html, 安装好附加组件管理器,登陆的时候,应该就可以跳转到带有火狐通行证的登陆页面了。

2022-02-25 23:03:41 · 1 min · Eddie Wang

有意思的命令行工具

1. datamash https://www.gnu.org/software/datamash/ 能够方便的计算数据的平均值,最大值,最小值等数据。 2. textsql https://github.com/dinedal/textql 能够方便的对csv文件做sql查询 3. graph-cli https://github.com/mcastorina/graph-cli 能够直接读取csv文件,然后绘图。

2022-02-25 09:23:35 · 1 min · Eddie Wang

manjaro kde 之旅

1. 安装vivaldi浏览器 pamac install vivaldi 参考:https://wiki.manjaro.org/index.php/Vivaldi_Browser 2. 关闭三次密码错误锁定 修改/etc/security/faillock.conf, 将其中的deny取消注释,并改为0,然后注销。重新登录。 deny = 0 3. 禁用大写锁定键 在输入设备中,选择键盘-》高级》 Caps Lock行为, 选中Caps Lock被禁用, 然后应用。

2022-01-18 09:39:05 · 1 min · Eddie Wang