Raspberry Pi Zero W解决调试信息不足的问题(以libzmq-dev为例)

最近在参照 树莓派实时系统下脚本语言的选择(应当使用Lua而不是Python) 调用调试lua-zmq的时候,发现使用PAIR模式进行线程之间通信,长时间运行后会出现死锁的情况。

当我们需要跟踪问题的时候,使用apt-get安装的版本缺乏必要的调试信息。

我们可以手工安装调试信息包,如下:

$ sudo apt install libzmq-dbg

# 系统默认的lua 5.1的符号信息使用如下命令安装
$ sudo apt-get install liblua5.1-0-dbg

# libreadline提供了多个版本(5,6,7),根据需要下载对应的版本
$ sudo apt-get install libreadline6-dbg

# sudo apt-get install search libtinfo* 根据返回的结果安装
$ sudo apt-get install libtinfo5-dbg

我们也可以从源代码重新编译一份,如下:

# 打开源代码的源
$ sudo sed -i "s/^#deb-src/deb-src/g" /etc/apt/sources.list

# 安装必要的编译工具
$ sudo apt-get install build-essential devscripts lintian

$ cd ~

# 下载源代码,此处不可sudo,否则后续操作会出现权限问题
$ apt-get source libzmq-dev

$ cd zeromq*/

# 安装依赖项
$ sudo apt-get install libpgm-dev

$ sudo apt-get install uuid-dev

$ debuild -us -uc -b

$ cd ..

$ sudo dpkg -i libzmq-dev*.deb

$ sudo dpkg -i libzmq-dbg*.deb

$ sudo ldconfig

以上是针对Debian安装包来进行的处理,然而对于luarocks安装的插件来说,默认luarocks是不能编译调试版本的,此时就需要我们手工编译了。我们以lua-zmq为例子,参考如下:

$ sudo apt-get -y install cmake

$ git clone git://github.com/Neopallium/lua-zmq.git

$ git checkout v1.1

$ cd lua-zmq ; mkdir build ; cd build

$ cmake -DCMAKE_BUILD_TYPE=Debug ..

$ make

$ sudo make install

$ sudo ldconfig

sql中!=与的区别

背景

sql中表示不等于关系时,有两种写法!=、<>,抱着刨根问底的精神,看看这两个符号到底有什么不同

标准答案

https://stackoverflow.com/questions/18015422/what-is-difference-between-and-in-sql-server

搬运过来

这两个符号没有任何区别,你使用哪个都一样。

Microsoft的文档中,这两个符号的意义相同,都是 Not Equal To

https://docs.microsoft.com/en-us/sql/t-sql/language-elements/not-equal-to-transact-sql-exclamation?view=sql-server-2017

但,<>是ANSI 99 SQL标准中的定义,!=不是。所以,不是所有的DB引擎都支持!=。

最终推荐使用<>。