vscode 通过数据断点分析segmentation fault


debug

通常地,程序异常,我们借助vscode在ubuntu主动调试,程序会自动在异常代码位置停下来,但是异常分析通常不会这么简单,而是一连串连锁反应。

这里尝试分析,因为程序异常,非法写入了一段正常内存,从而导致多个链路之后异常发生。而对于此问题,最常使用的调试手段就是添加数据断点。

...

socat


socat
http://www.dest-unreach.org/socat/

socat 是一个命令行工具,用以建立一个双向字节流交换数据。该字节流又可以被构造成不同地址类型,大量的地址选项也同样可以被作用于该流,因此socat非常强大。

filan 是一个打印文件描述符的工具,已经被重构用以调试socat,当然,也可以另做它用。

...

在linux 下通过vscode调试elf可执行文件


elf 是linux 下可执行可链接文件(executable and linkable format)。通过gcc/make 我们很容易编译出我们需要的elf文件,借助vscode可以在ubuntu图形化调试该程序,再也不用在gdb命令操作了。

如下是elf文件结构,包含文件头(elf header)和代码、数据区索引表(program header table、section header table)和对应代码区、数据区。

...

docker devicemapper 存储异常


这里记录早期版本docker (1.11.2)在centos 7(linux3.10)devicemapper存储异常,导致docker容器的空间内文件删除后存储空间不能正常释放。

磁盘40G,早期因为日志异常docker使用了30G,后面删除日志后容器容量一致在30G往上涨,慢慢地主机的磁盘完全被消耗掉,但是实际容器使用7G。

关于如上描述异常,这里有详细分析描述:

...

Ubuntu wireless-ac 9560 驱动异常


重启电脑后发现wifi不能使用了,网络设置里面提示未发现网络适配器。电脑比较新,之前安装ubuntu18.10 低版本kernel 版本就发现不识别wifi设备,更新到ubuntu19.10 后正常,不过正常安装后也反复重启过使用了一段时间。

第一时间排查dmesg 发现有iwlwifi 内核模块报错。主动搜索报错码-110毫无头绪,电脑比较新,系统也比较新。

顺着iwlwifi提示做了以下排除。

...

开源homekit adk 测试


由amazon、apple、google、zigbee alliance牵头的project connected home over ip项目成立了,旨在统一智能硬件在应用层的通信协议,多年智能家居从业,从早期私有协议,再到各家所谓的data models、tls(things language specification)、物模型、miot-spec,甚是知道在上层应用的通信语言的不统一,带来的设备模型重影映射是多么繁琐。

巧的是第二天zigbee 联盟就来公司就行了宣讲。很多人会觉得很别扭,上层的应用通信语言的统一为什么会有zigbee联盟的加入,熟悉zigbee协议的应该知道,发展了10多年的zigbee在zigbee3.0后才逐渐进入人们视野。很大程度上是得益于zigbee3.0设备的zcl revision7,基于硬件属性统一了硬件之间的通信语言,打通不同硬件厂商的设备的通信。而zcl则是zigbee 联盟的物联网统一语言规范dotdot的over zigbee应用,显然地,zigbee 并不满足于此,这一次四位大佬的相聚相信会取其大家特长,打通设备之间的网关、iot平台、应用之间的标准通信语言。

利好的是由于google的加入,该项目组的从规范、到源码都会开源。很多人会由此质疑苹果的决心,于是就有了苹果的homekit hdk开源。

...

在ubuntu上使用onedrive


自从使用了onedrive过后就像发现宝贝似得,跨机器自动同步文件很是方便,特别是一些正在进行调试笔记、开发文档。所以在ubuntu也马上考虑使用onedrive。

通过apt安装如下依赖工具包。

python3-dev

...

在局域网建立.local域名


需要理解linux下面的几个概念。

主机名,默认保存在/etc/hosname,可以通过命令hostname查看和更改。

本地域名文件,配置后再本机立即生效。默认地,会设置本机hostnamehosts使之映射到127.0.0.1。同样地,局域网内也可以通过http://hostname 到该机器。

...

thingsboard 开发环境建立


版本管理工具,注意配置环境变量,保证命令窗口能够直接使用。

  • oracle jdk

    现在安装成功后,需要配置环境变量。保证在cmd窗口node能够直接运行,并且通过node -v 查询版本后修改thingsboa()rd 工程中的pom.xml

  • maven

    工程是基于maven管理,直接通过idea open,之后会自动下载各种依赖包。

    ...