# 问题排查|Troubleshooting ## 常见问题 ### 1. 编译错误 **问题**: 找不到编译器 **解决方案**: - Windows: 在 Visual Studio Developer Command Prompt 中运行 - Linux: 安装 build-essential 和 cmake ```bash sudo apt install build-essential cmake ``` ### 2. 端口被占用 **问题**: `bind: Address already in use` **解决方案**: - 更换端口号 - 关闭占用该端口的进程 ```bash # Linux/Mac lsof -i :8080 kill -9 # Windows netstat -ano | findstr :8080 taskkill /F /PID ``` ### 3. 变量未替换 **问题**: 页面显示 `{{xxx}}` 而不是实际值 **解决方案**: - 确保使用 `nl_web_add_html_with_vars` 或 `nl_web_add_vue_with_vars` - 检查变量名是否匹配 - 确保变量数组和值数组长度一致 ### 4. 编码问题 **问题**: 中文显示乱码 **解决方案**: ```c // 设置响应编码为UTF-8 nl_web_set_encoding(server, "UTF-8"); ``` ### 5. 交叉编译失败 **问题**: 找不到交叉编译工具链 **解决方案**: ```bash # 安装交叉编译工具链 sudo apt install gcc-aarch64-linux-gnu gcc-arm-linux-gnueabihf gcc-riscv64-linux-gnu ``` ### 6. 内存泄漏 **问题**: 长时间运行内存增长 **解决方案**: - 使用 `nl_web_destroy` 释放服务器资源 - 使用 `nl_json_destroy` 释放JSON对象 ### 7. 日志不显示 **问题**: 调试日志看不到输出 **解决方案**: ```c // 设置日志级别为DEBUG nl_log_set_level(NL_LOG_DEBUG); // 或启用调试模式 nl_debug_enable(1); ``` ## 调试技巧 ### 启用调试模式 ```c #include "netleaf.h" int main() { // 启用调试模式 nl_debug_enable(1); // 创建服务器 nl_web_server_t* server = nl_web_create(8080); // 启动服务器 nl_web_start(server); while (1) sleep(1); return 0; } ``` ### 自定义日志回调 ```c void my_log_callback(nl_log_level_t level, const char* msg, void* user_data) { const char* levels[] = {"DEBUG", "INFO", "WARN", "ERROR"}; printf("[%s] %s\n", levels[level], msg); } int main() { nl_log_set_callback(my_log_callback, NULL); // ... } ``` ## 支持 如果您遇到问题,请检查: 1. 是否安装了必要的依赖 2. 是否使用正确的构建命令 3. 是否有足够的权限 ## 报告问题 请提供以下信息: - 操作系统版本 - 编译命令 - 错误日志 - 代码示例