我想用gdb调试nginx程序,但是过程中出现了问题,能不能帮忙看看?
操作流程
1.首先配置了make的-g参数,使cc -g
2.gdb objs/nginx 开始调试
3.b src/core/nginx.c:91 打断点到函数的第一行,肯定有argc的
问题
1.有时候断点失效,捉摸不透,感觉自己用了假的gdb,比如输入r命令,直接执行完成了,并没有中断,使用print var,说
(gdb) print argc
No symbol "argc" in current context.
2.list参数显示文件源码,但是显示的是这个:
(gdb) list
1 /* Startup code compliant to the ELF x86-64 ABI.
2 Copyright (C) 2001-2012 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4 Contributed by Andreas Jaeger <aj@suse.de>, 2001.
5
6 The GNU C Library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
10
(gdb) list main
No line number known for main.
按照网上配置了directory,还是不能解决,我是使用
(gdb) directory src/core/
编译开发版的 nginx,这里以 github 上的 nginx 源码镜像为例
修改 nginx.conf 配置文件,让它监听在 8080 端口,并启用开发模式
此时运行 nginx ,然后用浏览器打开 http://localhost:8080/ 确认网站运行
最后使用 gdb 重新运行 nginx
gdb 提示
help
或者help xxx
获得命令帮助。b <函数名>
,不必找出函数的文件位置。list
同理。参考