免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4074 | 回复: 4
打印 上一主题 下一主题

[C++] gdb 不能进入main函数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-07-18 17:49 |只看该作者 |倒序浏览
[root@localhost update_server]#gdb update
GNU gdb (GDB) Red Hat Enterprise Linux (7.0.1-32.el5_6.2)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /root/update_server/update...done.
(gdb) l
1 #include "HandlerMessage.h"
2 #include "update_server.h"
3 #include "spserver.hpp"
4
5 static const int LISTEN_PORT = 9999;
6 static const char* SERVER_IP = "192.168.0.199";
7
8 int main( int argc, char** argv )
9 {
10 SP_Server server( SERVER_IP, 9999, new Update_HandlerFactory() );
(gdb) l
11 server.setTimeout( 3600 );
12 server.runForever();
13 }
14
(gdb) b 5
Breakpoint 1 at 0x6767: file /root/update_server/Server.cpp, line 5.
(gdb) info b
Num Type Disp Enb Address What
1 breakpoint keep y 0x00006767 in main(int, char**) at /root/update_server/Server.cpp:5
(gdb) r
Starting program: /root/update_server/update

Program received signal SIGSEGV, Segmentation fault.
0x00000001 in ?? ()
(gdb) bt
#0 0x00000001 in ?? ()
(gdb) quit
A debugging session is active.

  Inferior 1 [process 3029] will be killed.

Quit anyway? (y or n) y

为何连主函数都没有进去?
下面的是代码:
#include <iostream>
#include "HandlerMessage.h"
#include "update_server.h"
#include "spserver.hpp"

static const int LISTEN_PORT = 9999;
static const char* SERVER_IP = "192.168.0.199";

int main( int argc, char** argv )
{
  SP_Server server( SERVER_IP,LISTEN_PORT, new Update_HandlerFactory() );
  server.setTimeout( 3600 );
  server.runForever();
}

论坛徽章:
0
2
发表于 2011-07-18 17:50
补充:
程序的makefile如下:

###############OPTION###################
CCOMPILE = gcc
CPPCOMPILE = g++
#COMPILEOPTION = -c -g -DDLLIMPORT="" -DHAVE_NAMESPACE_STD -DHAVE_CXX_STRING_HEADER
COMPILEOPTION = -g -fPIC -DDLLIMPORT="" -DHAVE_NAMESPACE_STD
INCLUDEDIR = -I/usr/local/spserver -I/root/update_server/include -I/usr/local/libevent/include
LINK = g++
LINKOPTION = -g -o update -Wall
LIBDIRS = -L/usr/local/spserver -L/usr/include -L/usr/local/libevent/include -L/usr/local/libevent/lib
OBJS = /root/update_server/update_server.o /root/update_server/Server.o /root/update_server/MessageHeader.o /root/update_server/MessageContent.o /root/update_server/Message.o /root/update_server/HandlerMessage.o
OUTPUT = update
SHAREDLIB = -lspserver -levent -lpthread -lm -lz -shared
APPENDLIB =
PROC_OPTION = DEFINE=_PROC_ MODE=ORACLE LINES=true CODE=CPP
ESQL_OPTION = -g
################OPTION END################
ESQL = esql
PROC = proc
$(OUTPUT)(OBJS) $(APPENDLIB)
  $(LINK) $(LINKOPTION) $(LIBDIRS) $(OBJS) $(SHAREDLIB) $(APPENDLIB)

clean:
  rm -f $(OBJS)
  rm -f $(OUTPUT)
all: clean $(OUTPUT)
.PRECIOUS:%.cpp %.c %.C
.SUFFIXES:
.SUFFIXES: .c .o .cpp .ecpp .pc .ec .C .cc .cxx

.cpp.o:
  $(CPPCOMPILE) -c -o $*.o $(COMPILEOPTION) $(INCLUDEDIR) $*.cpp
   
.cc.o:
  $(CCOMPILE) -c -o $*.o $(COMPILEOPTION) $(INCLUDEDIR) $*.cpp

.cxx.o:
  $(CPPCOMPILE) -c -o $*.o $(COMPILEOPTION) $(INCLUDEDIR) $*.cpp

.c.o:
  $(CCOMPILE) -c -o $*.o $(COMPILEOPTION) $(INCLUDEDIR) $*.c

.C.o:
  $(CPPCOMPILE) -c -o $*.o $(COMPILEOPTION) $(INCLUDEDIR) $*.C  

.ecpp.C:
  $(ESQL) -e $(ESQL_OPTION) $(INCLUDEDIR) $*.ecpp
   
.ec.c:
  $(ESQL) -e $(ESQL_OPTION) $(INCLUDEDIR) $*.ec
   
.pc.cpp:
  $(PROC) CPP_SUFFIX=cpp $(PROC_OPTION) $*.pc


[root@localhost update_server]#file update
update: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), not stripped
[root@localhost update_server]#ldd update
  linux-gate.so.1 => (0x00b95000)
  libspserver.so => /usr/local/spserver/libspserver.so (0x00fb5000)
  libevent-1.4.so.2 => /usr/lib/libevent-1.4.so.2 (0x00b25000)
  libpthread.so.0 => /lib/libpthread.so.0 (0x00867000)
  libz.so.1 => /usr/lib/libz.so.1 (0x003cb000)
  libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00dfb000)
  libm.so.6 => /lib/libm.so.6 (0x00284000)
  libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00f9c000)
  libc.so.6 => /lib/libc.so.6 (0x00110000)
  libnsl.so.1 => /lib/libnsl.so.1 (0x00a10000)
  librt.so.1 => /lib/librt.so.1 (0x00269000)
  libresolv.so.2 => /lib/libresolv.so.2 (0x00d80000)
  /lib/ld-linux.so.2 (0x009b0000)
[root@localhost update_server]#nm update |grep m
0000570e t _GLOBAL__I_main
  U _Unwind_Resume@@GCC_3.0
00007c28 T _ZN11BusiHandler11getFileNameEiSsi
00005a2c T _ZN13MessageHeader12toCharStreamEPc
00005c94 T _ZN13MessageHeader7getNameEv
00005964 T _ZN13MessageHeader7setNameESs
00006772 W _ZN13TransFormUtil14charArrayToIntEPc
000066c6 W _ZN13TransFormUtil14intToCharArrayEiPc
00006994 T _ZN14MessageContent12toCharStreamEPc
00004952 T _ZN14Update_Handler7timeoutEP11SP_Response
  U _ZN9SP_Server10setTimeoutEi
00009502 W _ZN9__gnu_cxx17__normal_iteratorIPKSsSt6vectorISsSaISsEEEC1ERKS2_
0000962c W _ZN9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEC1ERKS1_
0000975c W _ZN9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEppEv
0000958c W _ZN9__gnu_cxxmiIPKSsS2_St6vectorISsSaISsEEEENS_17__normal_iteratorIT_T1_E15difference_typeERKS9_RKNS6_IT0_S8_EE
0000997c W _ZN9__gnu_cxxneIPSsSt6vectorISsSaISsEEEEbRKNS_17__normal_iteratorIT_T0_EESA_
  U _ZNK17SP_HandlerFactory23createCompletionHandlerEv
00009824 W _ZNK9__gnu_cxx13new_allocatorISsE8max_sizeEv
00009584 W _ZNK9__gnu_cxx17__normal_iteratorIPKSsSt6vectorISsSaISsEEE4baseEv
00009754 W _ZNK9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEE4baseEv
0000945c W _ZNK9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEdeEv
000096a0 W _ZNK9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEplERKi
00009350 W _ZNKSt4fposI11__mbstate_tEcvxEv
0000974a W _ZNKSt6vectorISsSaISsEE8max_sizeEv
00009466 W _ZNSt12_Vector_baseISsSaISsEE12_Vector_implC1ERKS0_
00009430 W _ZNSt12_Vector_baseISsSaISsEE12_Vector_implD1Ev
  U _ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
  U _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCXX_3.4
  U _ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4
0000982e W _ZNSt15__copy_backwardILb0ESt26random_access_iterator_tagE6copy_bIPSsS3_EET0_T_S5_S4_
000098b8 W _ZNSt22__copy_backward_normalILb1ELb1EE8copy_b_nIN9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEES8_EET0_T_SA_S9_
00009dd8 W _ZNSt6vectorISsSaISsEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPSsS1_EERKSs
000099b8 W _ZSt13__destroy_auxIN9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEEEvT_S7_12__false_type
0000992a W _ZSt13copy_backwardIN9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEES6_ET0_T_S8_S7_
00009c62 W _ZSt18uninitialized_copyIN9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEES6_ET0_T_S8_S7_
00009cb4 W _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEES6_SsET0_T_S8_S7_SaIT1_E
00009ba6 W _ZSt24__uninitialized_copy_auxIN9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEES6_ET0_T_S8_S7_12__false_type
00009a06 W _ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEEEvT_S7_
00009a38 W _ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEESsEvT_S7_SaIT0_E
  w __gmon_start__
00004860 t call_gmon_start
0000d7b0 b completed.5791
00004910 t frame_dummy
0000574c T main
  U memset@@GLIBC_2.0

论坛徽章:
0
3 [报告]
发表于 2011-07-18 18:03 |只看该作者
肯定进去了,不过进去就崩了。

论坛徽章:
0
4 [报告]
发表于 2011-07-18 18:37 |只看该作者
b main

论坛徽章:
0
5 [报告]
发表于 2011-07-20 12:22 |只看该作者
解决了,把makefile中的-shared参数去掉。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP