Lua raise error: C stack overflow

C stack overflow

在cpp中调用lua虚拟机,出现异常。

其实本质上是lua层代码调用了超过指定数量 LUAI_MAXCCALLS(默认200次)的cfunc导致的bug

Read more

监听随机端口

业务上存在需求,一类服务监听随机端口,并由服务发现业务管理内部分配,那么我们如何实现监听随机端口呢?

实际上将端口设置为0即可在规定范围内,分配一个可bind的端口

Read more

Strace

Strace是Linux环境下用于调试诊断应用程序调用systemcall的工具。

由于Strace只检测系统调用,因此Strace只是一个分析的侧面。
例如:命令perl -e 'while(1){}'不会产生任何系统调用

系统调用包括以下几个方面file, process, network, signal, ipc, desc, 默认将检测所有系统调用即all

Read more

关于Core dump(核心转储)

core dump是程序运行时,在进程收到某些信号而终止运行时,将此时进程地址空间的内容以及有关进程状态的其他信息写入一个磁盘文件。

对应会产生core dump的信号

Signal Action Comment
SIGQUIT Core Quit from keyboard
SIGILL Core Illegal Instruction
SIGABRT Core Abort signal from abort
SIGSEGV Core Invalid memory reference
SIGTRAP Core Trace/breakpoint trap

我们可以通过使用gdb查core dump文件,最后崩溃时的信息,来进行debug
为了更好的查看阅读core dump文件, linux下需要进行以下配置

Read more