草庐IT

c++ - 如何使用 gdb 从核心文件中获取 lua 堆栈跟踪

我有一个调用lua作为脚本语言的C++应用程序(用于OSX)。我正在运行大量这些应用程序(100个)并且它们可以运行很长一段时间(几天或几周)。有时会崩溃。当它崩溃时,它会给我留下一个可爱的核心文件。我可以在gdb中打开这个核心文件并找到应用程序崩溃的位置。我可以遍历调用堆栈并找到一个lua_State变量的实例。我的问题是我想看看lua调用堆栈是什么样的这次……请记住,由于这是一个核心,我无权调用C函数,这排除了调试lua脚本的几种常用方法。我想避免通过调试钩子(Hook)添加手动跟踪,因为我担心额外的性能损失和增加的复杂性。如何遍历lua内部结构来获取调用堆栈信息?

c++ - 从 Lua 调用函数时如何处理 C++ 异常?

我有一个可以从Lua调用的C++函数。为了演示我的问题,这里举个例子:intPushHello(lua_State*L){stringstr("Hello");lua_pushlstring(L,str.data(),str.length());return1;}注意:我知道我不必在那里使用字符串变量,但它是用来演示问题的。这是我的两个问题:当我从Lua字符串构造函数调用这个函数时,可能会抛出异常。那是问题吗?Lua会处理它并正确展开Lua堆栈吗?我不这么认为。我该如何解决?我是否需要在所有此类代码周围添加try/catch并将异常转换为lua_error?没有更好的解决方案吗?另一个

c++ - Lua,游戏状态和游戏循环

在每次游戏循环迭代时调用main.lua脚本-这是好的还是坏的设计?它对性能有何影响(相对)?从a维护游戏状态。C++主机程序或b。来自Lua脚本或c。从两者同步?(关于该主题的上一个问题:LuaandC++:separationofduties)(我为每个答案投票。最佳答案将被接受。) 最佳答案 我对lua的基本规则是-或游戏中的任何脚本语言-每一帧发生的任何事情:c++异步事件-用户输入-lua同步游戏引擎事件-lua基本上,任何以>33-100Hz(取决于帧速率)调用的代码都是C++我尝试调用基于任何类型的实际指标?并不真地。

docker - 如何在 Alpine linux 上为 nginx 添加 Lua 模块?

我想要一个启用Lua模块的nginx精简Docker镜像。如何基于Alpinelinux创建它? 最佳答案 这是一个Dockerfile:FROMalpine:3.6RUNapkadd--no-cachenginx-mod-http-lua#DeletedefaultconfigRUNrm-r/etc/nginx/conf.d&&rm/etc/nginx/nginx.conf#CreatefolderforPIDfileRUNmkdir-p/run/nginx#AddournginxconfCOPY./nginx.conf/etc/

python - set.pop() 是确定性的吗?

我了解python集合的元素没有排序。调用pop方法返回任意元素;我没问题。我想知道的是,当集合具有相同的历史时,pop是否总是返回相同的元素。当然,在一个版本的python中,我不介意python的不同版本/实现是否做自己的事情。特别是,我问的是python2.7。在这种情况下,这不仅仅是api的实现问题。我在游戏的程序地牢生成器中大量使用集合,我希望结果对于给定的种子具有确定性。 最佳答案 一般的答案是否。@Christophe和@Marcin(un)有帮助地指出的python源代码表明,元素是按照它们在哈希表中出现的顺序弹出的

python - 从 C++ 调用 Python 或 Lua 来计算表达式,仅在需要时计算未知变量

我有一个这样的表达式/公式std::stringexpr="((A>0)&&(B>5||C>10))";我做了一些研究,似乎如果A、B、C值已知,通过在C++程序中嵌入Lua或Python,有eval函数可以替代A、B和C并返回true或false。但是当我不知道所有值时会发生什么?假设A是已知的并且它是-1。如果A为-1,则无论B或C的值如何,公式都将评估为“假”。我可以在事先不知道所有变量的情况下评估公式吗?例如,如果A为10,则查找B的值并再次重新评估是有意义的。我们如何解决这些问题?想法? 最佳答案 我不知道有任何现有的可用

python : list index out of range error while iteratively popping elements

我写了一个简单的python程序l=[1,2,3,0,0,1]foriinrange(0,len(l)):ifl[i]==0:l.pop(i)这给了我第ifl[i]==0:行上的错误“列表索引超出范围”调试后我发现i正在增加,列表正在减少。但是,我有循环终止条件i.那为什么我会收到这样的错误? 最佳答案 您正在缩短列表的长度l当您对其进行迭代时,当您接近range语句中索引的末尾时,其中一些索引不再有效。它看起来你想要做的是:l=[xforxinlifx!=0]这将返回l的副本没有任何为零的元素(顺便说一下,该操作称为listcom

python - python中使用pop()、list[-1]和+=时的求值顺序是什么?

a=[1,2,3]a[-1]+=a.pop()这会导致[1,6]。a=[1,2,3]a[0]+=a.pop()这会导致[4,2]。这两个结果的评估顺序是什么? 最佳答案 首先是右轴,然后是左轴。在任何一侧,评估顺序都是从左到右的。a[-1]+=a.pop()等同于a[-1]=a[-1]+a.pop()a=[1,2,3]a[-1]=a[-1]+a.pop()#a=[1,6]看看当我们改变RHS的操作顺序时行为会如何变化,a=[1,2,3]a[-1]=a.pop()+a[-1]#a=[1,5]

java - 模拟 IMAP 或 POP 服务器以进行单元测试的最简单方法是什么?

这个问题在这里已经有了答案:WorkingwithaJavaMailServerforTesting(5个回答)关闭8年前。我想对一个从电子邮件收件箱中提取邮件的Java应用程序进行单元测试,就像thisguy.目前,我在我们公司的真实邮件服务器上对真实邮箱进行单元测试,该邮箱易于设置,但存在以下缺点:您必须在运行测试之前发送实际的电子邮件添加更多测试用例可能很困难,例如因为您可能希望针对不同的安全策略进行测试测试取决于与邮件服务器的有效网络连接以及现有邮件帐户,该帐户以对我来说毫无意义的方式将开发和系统管理结合在一起。我想在本地端口上启动IMAP服务器,它会根据存储在测试类旁边的文件

java - 如何在 Java 中嵌入 Lua?

LuaJava是必须的吗?或者我可以在没有它的情况下将Lua嵌入到Java中吗? 最佳答案 LuaJ很容易嵌入到Java中。我确实必须更改其源代码的几行才能使其按预期工作(它不需要自动使用IO库)。http://sourceforge.net/projects/luaj/ 关于java-如何在Java中嵌入Lua?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2113432/