nginx: mac使用vscode本地调试nginx

vscode安装c语言插件

在extensions中搜索"c/c++", 将前3个插件都安装
在这里插入图片描述

在extensions中搜索"cmake", 将前2个插件都安装
在这里插入图片描述

下载nginx源码

nginx 源码: https://github.com/nginx/nginx

编译运行Nginx

  1. 修改 /auto/cc/conf 文件,将ngx_compile_opt=“-c” 修改为 ngx_compile_opt=“-c -g”

  2. 执行 sudo ./auto/configure --prefix=nginx工程目录 ,如果遇到错误 “the HTTP rewrite module requires the PCRE library”,执行以下命令安装pcre和pcre

    • brew install pcre
    • brew install pcre2
  3. 执行 sudo make

  4. 执行 ./objs/nginx,打开浏览器访问下 127.0.0.1,没问题的话就可以看到Nginx的欢迎界面了。
    但是在执行的时候启动失败:
    在这里插入图片描述
    处理方法:

    • 按提示创建nggix/logs/error.log
    • 退出nginx目录,使用 ./nginx/objs.nginx 启动

    访问 http://127.0.0.1 打开页面如下:
    在这里插入图片描述
    查看 nginx/logs/error.log 发现是由于找不到nginx/html/index.html文件才会报错的

    2024/03/07 14:21:32 [error] 7056#0: *1 "nginx/html/index.html" is not found (2: No such file or directory), client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", host: "127.0.0.1"
    2024/03/07 14:21:32 [error] 7056#0: *1 open() "nginx/html/favicon.ico" failed (2: No such file or directory), client: 127.0.0.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "127.0.0.1", referrer: "http://127.0.0.1/"
    2024/03/07 14:21:33 [error] 7056#0: *1 "nginx/html/index.html" is not found (2: No such file or directory), client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", host: "127.0.0.1"
    2024/03/07 14:21:37 [error] 7056#0: *3 "nginx/html/index.html" is not found (2: No such file or directory), client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", host: "127.0.0.1"
    

调试

  1. 在项目的 .vscode 目录下新增launch.json文件,内容如下:
{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(lldb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/objs/nginx",
            "args": [],
            "stopAtEntry": true,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "lldb"
        }
    ]
}
  1. 找到./src/core/nginx.c 运行,在该文件中有main方法,做为启动入口
    在这里插入图片描述

这样就可以打断点调试了
在这里插入图片描述

参考

VS CODE 轻松调试 Nginx
在vscode中调试nginx源码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/436864.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux C | 网络编程】多播的概念、多播地址、UDP实现多播的C语言例子

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

数据结构—KMP 算法:

算法思想: KMP算法实现寻找主串中子串的位置时,主串指针地址不回退,在比对过程中串仅仅遍历一次,子串的回退可以是与当前主串可重新最多匹配的地址位置。 BF与KMP算法比对: KMP BF 主串不用回退 主串回退&#xf…

新规正式发布 | 百度深度参编《生成式人工智能服务安全基本要求》

2024年2月29日,全国网络安全标准化技术委员会( TC260 )正式发布《生成式人工智能服务安全基本要求》(以下简称《基本要求》)。《基本要求》规定了生成式人工智能服务在安全方面的基本要求,包括语料安全、模…

【three.js】22. Imported Models导入模型

22. Imported Models导入模型 介绍 Three.js 可以让你创建很多原始几何体,但是当涉及到更复杂的形状时,我们最好使用专用的 3D 软件建模。 在本课中,我们将使用已经制作好的模型,但我们将在以后的课程中学习如何完全在 3D 软件中…

强化学习中动作价值函数和状态价值函数的联系区别?

在强化学习中,动作价值函数(Q函数)和状态价值函数(V函数)都是值函数,用于评估在不同状态或状态动作对下的值。它们之间存在联系,但有一些区别: 动作价值函数(Q函数&#…

STM32CubeIDE基础学习-相关工程文件介绍

STM32CubeIDE基础学习-相关工程文件介绍 前言 保存的工程要大致了解熟悉里面的文件代表的是什么意思、干什么用的,这样才方便后面使用或移植代码等。 当成功创建工程后,打开基础工程保存路径后可以看到所有文件如下图所示: 如果工程越复杂&a…

DDR ECC的使用

DDR ECC的使用 DDR注入错误测试 DDR先刷一遍0,ECC_STATUS,ECC_ON_OF初始化为0,数据注入错误,写DDR,读DDR。 ECC_STATUS 该寄存器保存有关可纠正和不可纠正错误发生的信息。状态位独立地设置为1,表示每种错…

MySQL--优化(索引--聚簇和非聚簇索引)

MySQL–优化(索引–聚簇和非聚簇索引) 定位慢查询SQL执行计划索引 存储引擎索引底层数据结构聚簇和非聚簇索引索引创建原则索引失效场景 SQL优化经验 一、聚簇索引 聚簇索引:将数据存储与索引放到了一块,索引结构的叶子节点保存…

鸿蒙 自定义弹窗对CustomDialogController二次封装

前言: 鸿蒙官方提供了自定义customdialog,调用代码很臃肿,必须在当前页面创建customDialogController,否则无法正常弹窗dialog 解决方案:目前就定义了两种类型的dialog 具体代码如下: 1. 用于代理dialog的…

从安卓转战月薪6万的鸿蒙原来这么简单

近年来,各家大厂正在积极布局鸿蒙客户端开发,鸿蒙操作系统备受瞩目,不少安卓开发者纷纷转战鸿蒙,并取得了可观的经济回报。本文将为大家揭示,从安卓转战鸿蒙并获得月薪6万的简单之道,希望能给正在考虑转型的…

亿发解析:互联网浪潮席卷,新零售崛起成为未来十年无可忽视之势

随着人们消费能力和水平的提高,消费者对产品质量的关注已不再仅限于产品本身,而更加强调产品质量与消费服务体验的双重重要性。随着互联网、移动支付、快递物流等技术的发展,这些技术催生了零售领域的新模式、新经济和新业态,为新…

四信5G FWA家族再添猛将,让你一眼沦陷的5G CPE来了!

随着全球5G基础设施建设的日益完善,千行百业迎来巨大变革,越来越多的场景因为5G网络实现跨越式升级,人们生活早已离不开超高速的互联网连接。 5G FWA作为弥合光纤欠发达地区数字鸿沟挑战的“杀手级应用”,摆脱对传统有线网络基础设…

图形报表ECharts

1、 ECharts简介 ECharts缩写来自Enterprise Charts,商业级数据图表,是百度的一个开源的使用 JavaScript实现的数据可视化工具,可以流畅的运行在 PC 和移动设备上,兼容当前绝大 部分浏览器(IE8/9/10/11,Ch…

ubuntu下使用MATLAB过程中的若干问题

ubuntu版本:Ubuntu 20.04 内核:Linux 5.15.0-97-generic MATALB版本:MATLAB R2022b 问题1:运行脚本时闪退 报错信息: Inconsistency detected by ld.so: ../elf/dl-tls.c: 517: _dl_allocate_tls_init: Assertion l…

vue-cli项目因为webpack版本不兼容运行后报错

vue-cli项目运行后报错: Error: Rule can only have one resource source (provided resource and test include exclude) in {"exclude": [null],"use": [{"loader": "G:\\CustomerDay\\customerday\\node_modules\\cache-l…

制片管理工具:提高制片效率的必备工具

一、什么是制片管理工具 制片管理工具是一种为制片人提供支持和协助的软件或工具,并提供一种集中管理制作进度、任务分配、成本预算、资源管理和进度跟踪的方式。它可以帮助制片人在项目的开发、制作和发布方面更有效地进行规划和监督,确保整个流程能够…

redis-集群 原生部署和工具自动部署

什么redis集群? redis集群是一个提供在多个redis节点之间共享数据的程序集。它并不像redis主从复制模式那样仅提供一个master节点来提供写服务,而是会提供多个master节点来提供写服务,每个master节点中存储的数据都不一样,这些数据…

buildadmim生成代码时让菜单有层级

当我们使用buildadmin生成代码的时候,在菜单的部分, 有时希望它生的是一个带有层级的菜单,有时候则想生成一个没有层级的菜单 like this 经过本人测试 如果我们要生成没有层级的菜单 我们可以在高级设置中的 相对位置处更改,同时…

O2O:Adaptive policy learning for offline-to-online reinforcement learning

AAAI2023 paper Introduction 传统Online RL需要智能体与环境进行海量交互,而Offline RL容易受限于数据集质量。因此本文提出一种O2O的自适应策略学习框架APL。APL在离线阶段悲观更新策略而在现阶段乐观更新。进一步,基于框架分别提出value-based 以及…

蓝牙APP开发实现汽车遥控钥匙解锁汽车智能时代

在现代社会,随着科技的不断发展,汽车已经不再是简单的交通工具,而是与智能科技紧密相连的载体。其中,通过开发APP蓝牙程序实现汽车遥控钥匙成为了一种趋势,为车主带来了便捷与安全的体验。虎克技术公司作为行业领先者&…