如何从Lua运行过程中读取变量值(获取过程变量值)
How to read variables values from Lua running process ( obtain process variable value )?
我尝试过运行Lua代码,并在其通过C/C++
运行时检索其值,但我的应用程序因分段错误而崩溃。
例如。访问不属于我的内存:
到目前为止,我得到了这个。简单的过程,使用Lua解释器:
a = {5}
local Cnt1 = 0
local Cnt2 = 0
while true do
Cnt2 = Cnt2 + 1
if(Cnt2 == 100000000) then
Cnt2 = 0
print("Irer: "..Cnt1.." Address: "..tostring(a).." Value: "..a[1])
Cnt1 = Cnt1 + 1
end
end
无限循环实际上是为了保持进程唤醒和表地址不变。
正如您所看到的,我打印了"a"的地址,并将其复制粘贴到控制台本身的C(代码块)中。之后,我写了另一个程序,将指针硬编码为内存映射,如下所示:
unsigned char *p = (unsigned char *)0x78C070;
printf("Value: %u",*p);
return 0;
可能的方法有
1) 我可以尝试的方法是一个文件,但它真的很慢(HDD)
2) ram磁盘上的文件很快,但不是每个人都有ram磁盘。
创建一个C包装程序并使用Lua C API来检索值。下面是一个应该检索"a"的示例。没有错误处理,但希望你能明白。
lua_State *L = sys_lua_L();
luaL_loadfile(L, "your_lua_script.lua");
lua_pcall(L, 0, 0, 0);
lua_getglobal(L, "a"); // retrieve lua variable a
lua_rawgeti(L, -1, 1); // assumes "a" is a table
int val = lua_tointegerL, -1);
printf("%dn", val);
相关文章:
- 使用变量值作为 PlaySound 中的路径
- 通过指针偏移量访问结构变量值
- 变量值在 C++ 中的 glutIdleFunc() 中未递增
- 更新 #ifdef 中的现有变量值?
- 尝试更改 main 函数内的全局变量值时出现编译错误 C++.
- 通过 Rcpp 和 bit64 R 包将最大的int64_t变量值从 C++ 传递到 R
- 如何使用 IRBuilder 更新 LLVM IR 中的全局变量值?
- 更改已在运行的程序的变量值
- 在 Xcode 中使用后对外部变量值进行初始化
- C++整数变量值
- 获取模板参数的成员变量值列表
- 在 for 循环和变量值中获取此代码的多个错误;
- 获取C++中的另一个进程变量值(或内存地址)
- 如何使用 IloCplex::readSolution() 和查询 cplex 类实例后获取变量值和其他值
- 如何从Lua运行过程中读取变量值(获取过程变量值)
- C++通过串联的变量名称获取变量值
- 基类指针只获取派生类变量值,而不获取基类变量值的原因
- 是否有 API 来获取操作系统中定义的原始变量值
- Arduino,在代码执行过程中丢失变量值
- 是否可以使用类实例名称获取私有变量值