vuser_init.c(12): Error: Socket descriptor not found

本文针对LoadRunner在使用过程中出现的Socketdescriptor not found错误提供了解决方案。主要包括更新运行时设置以将Vuser作为进程运行,并修改mdrv.dat文件中的配置。此外还提到了一种可能的临时解决方案,即禁用网页诊断。

vuser_init.c(12): Error: Socket descriptor not found.  Hint: the problem might be solved applying the following: (1) Update Run-Time Settings to Run Vuser as a process. (2) Add the following line into mdrv.dat, [lr_socks] section: 'ExtCmdLineConc=-UsingWinInet Yes'.


1、根据错误提示,在run-time setting中的Miscellaneous项中设置“run vuser as a process”;

2、...\Program Files (x86)\HP\LoadRunner\dat\mdrv.dat  

查找[lr_socks] 在后面添加“ ExtCmdLineConc=-UsingWinInet Yes ”,如下:

..............[lr_socks]ExtPriorityType=hookWINNT_EXT_LIBS=lr_socks.dllWIN95_EXT_LIBS=lr_socks.dllLINUX_EXT_LIBS=liblr_socks.soSOLARIS_EXT_LIBS=liblr_socks.soHPUX_EXT_LIBS=liblr_socks.slAIX_EXT_LIBS=liblr_socks.soLibCfgFunc=lr_socks_configureExtMessageQueue=0SecurityMode=OnExtCmdLineConc=-UsingWinInet Yes........


3、如果仍然报错,在菜单栏中点击Diagnostics->configuration项,将web page diagnostics项改为:Enable (这一招只能说眼不见心不烦),我觉得还有更好的解决办法。
非常抱歉,`lr_hash` 并不是 LoadRunner 的标准函数,LoadRunner 并不直接支持哈希表结构。上述建议是基于理想状态下的优化思路,但在实际 LoadRunner 环境中(使用 C 脚本),确实无法使用 `lr_hash`,所以出现了 `Unresolved symbol: lr_hash` 错误。 --- ### ✅ 正确优化方案(适用于 LoadRunner C 脚本) 为了提高效率,我们可以采用以下方式优化原始代码: #### ✅ 1. **将角色列表和数量提取为全局变量** 避免每次执行函数时重复初始化数组。 #### ✅ 2. **使用二分查找代替线性查找** 前提:将角色数组排序,然后使用 `bsearch` 函数进行查找,时间复杂度从 O(n) 降低到 O(log n)。 --- ### ✅ 优化后的代码如下: ```c // 全局变量定义 char *roles_global[] = { "ACT Education Corp.", "ATLAS营销云", "APEC", "Aloudata", "Escap", "FIFA", "FBeauty未来迹", "Google", "IBM", "ITU", // ...(此处省略部分数据,保持原数组不变) "仲量联行", "佐思汽研" }; int numRoles_global = sizeof(roles_global) / sizeof(roles_global[0]); // 比较函数,用于 bsearch int compare_strings(const void *a, const void *b) { return strcmp(*(char **)a, *(char **)b); } // 排序角色列表(在 vuser_init 中执行一次) vuser_init() { qsort(roles_global, numRoles_global, sizeof(char *), compare_strings); return 0; } // 优化后的 Action 函数 Action_opt(char userRole[50]) { char *key = userRole; char **result; result = (char **)bsearch(&key, roles_global, numRoles_global, sizeof(char *), compare_strings); if (result != NULL) { lr_output_message("orgName is in the list"); return 1; } else { lr_output_message("orgName is not in the list"); return 0; } } ``` --- ### ✅ 优化说明: | 优化点 | 说明 | |--------|------| | 全局变量 | 避免每次调用函数重复初始化角色数组 | | 快速排序 + 二分查找 | 使用 `qsort` 和 `bsearch`,将查找复杂度从 O(n) 降低到 O(log n) | | 减少 CPU 消耗 | 减少重复的字符串比较操作 | --- ### ✅ 示例说明: - 原始线性查找:假设角色有 500 个,最坏情况需要比较 500 次。 - 优化后二分查找:最多只需要比较 `log2(500) ≈ 9` 次。 --- ### ✅ 性能提升效果: - **效率提升明显**:尤其在角色数量多时,性能提升显著。 - **内存占用低**:没有引入额外结构,适合 LoadRunner 脚本运行环境。 --- ### ✅ 注意事项: - `bsearch` 要求数组必须**已经排序**,因此在 `vuser_init()` 中执行一次排序即可。 - 字符串指针数组 `char *roles_global[]` 更节省内存,也方便排序和查找。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值