1.首先配置了make的-g參數(shù),使cc -g
2.gdb objs/nginx 開(kāi)始調(diào)試
3.b src/core/nginx.c:91 打斷點(diǎn)到函數(shù)的第一行,肯定有argc的
1.有時(shí)候斷點(diǎn)失效,捉摸不透,感覺(jué)自己用了假的gdb,比如輸入r命令,直接執(zhí)行完成了,并沒(méi)有中斷,使用print var,說(shuō)
(gdb) print argc
No symbol "argc" in current context.
2.list參數(shù)顯示文件源碼,但是顯示的是這個(gè):
(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.
按照網(wǎng)上配置了directory,還是不能解決,我是使用
(gdb) directory src/core/
編譯開(kāi)發(fā)版的 nginx,這里以 github 上的 nginx 源碼鏡像為例
git clone https://github.com/nginx/nginx.git
cd nginx
CFLAGS="-g -O0" ./auto/configure --with-debug --prefix=../etc
make
make install
修改 nginx.conf 配置文件,讓它監(jiān)聽(tīng)在 8080 端口,并啟用開(kāi)發(fā)模式
worker_processes 1;
+master_process off;
+daemon off;
http {
server {
-listen 80;
+listen 8080;
此時(shí)運(yùn)行 nginx ,然后用瀏覽器打開(kāi) http://localhost:8080/ 確認(rèn)網(wǎng)站運(yùn)行
../etc/sbin/nginx
最后使用 gdb 重新運(yùn)行 nginx
xxx/nginx > gdb ../etc/sbin/nginx
Reading symbols from ../etc/sbin/nginx...done.
(gdb) b main
Breakpoint 1 at 0xNNNN: file src/core/nginx.c, line 196.
(gdb) r
Starting program: ../etc/sbin/nginx
[Thread debugging using libthread_db enabled]
Using host libthread_db library "xxx/lib/libthread_db.so.1".
(gdb) b main
Breakpoint 1, main (argc=1, argv=0xNNNN) at src/core/nginx.c:196
(gdb) list main
191 static char **ngx_os_environ;
192
193
194 int ngx_cdecl
195 main(int argc, char *const *argv)
196 {
197 ngx_buf_t *b;
198 ngx_log_t *log;
199 ngx_uint_t i;
200 ngx_cycle_t *cycle, init_cycle;
(gdb) print argc
$1 = 1
(gdb) print argv[0]
$2 = 0xNNNN "xxx/etc/sbin/nginx"
help
或者 help xxx
獲得命令幫助。b <函數(shù)名>
,不必找出函數(shù)的文件位置。list
同理。北大青鳥(niǎo)APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專(zhuān)業(yè)的國(guó)家
北大青鳥(niǎo)中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過(guò)二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開(kāi)發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。