Lua如何设置断点行号自动检测与修正,实现类似gdb的调试功能?

2026-05-27 15:290阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计336个文字,预计阅读时间需要2分钟。

Lua如何设置断点行号自动检测与修正,实现类似gdb的调试功能?

我们针对性能做了优化,接下来将继续丰富调试器的特性。之前提到,函数内部并非所有行都是有效行,空行和注释行不算作有效行。在添加断点时,我们需注意这一点。

前面两篇我们对性能做了一个优化,接下来继续来丰富调试器的特性。

Lua如何设置断点行号自动检测与修正,实现类似gdb的调试功能?

我们前面提到过,函数内并不是所有行都是有效行,空行和注释行就不是有效行。我们之前在添加断点的时候,并没有对行号进行检查,任何行号都能成功添加断点。所以如果添加的断点行号是无效的,那么永远也不会断到那里。但是钩子里并不知道它是无效的,call事件仍然会以为函数有断点从而启动line事件,造成CPU的浪费。

所以本篇,我们将对断点的行号进行检查,对于不在函数范围内的行号直接添加断点失败;在函数范围内的行号则自动修正为下一个有效的行号;另外支持不指定行号,默认为函数的第一个有效行。

源码已经上传Github,欢迎watch/star

标签:断点调试

本文共计336个文字,预计阅读时间需要2分钟。

Lua如何设置断点行号自动检测与修正,实现类似gdb的调试功能?

我们针对性能做了优化,接下来将继续丰富调试器的特性。之前提到,函数内部并非所有行都是有效行,空行和注释行不算作有效行。在添加断点时,我们需注意这一点。

前面两篇我们对性能做了一个优化,接下来继续来丰富调试器的特性。

Lua如何设置断点行号自动检测与修正,实现类似gdb的调试功能?

我们前面提到过,函数内并不是所有行都是有效行,空行和注释行就不是有效行。我们之前在添加断点的时候,并没有对行号进行检查,任何行号都能成功添加断点。所以如果添加的断点行号是无效的,那么永远也不会断到那里。但是钩子里并不知道它是无效的,call事件仍然会以为函数有断点从而启动line事件,造成CPU的浪费。

所以本篇,我们将对断点的行号进行检查,对于不在函数范围内的行号直接添加断点失败;在函数范围内的行号则自动修正为下一个有效的行号;另外支持不指定行号,默认为函数的第一个有效行。

源码已经上传Github,欢迎watch/star

标签:断点调试