From owner-freebsd-questions@FreeBSD.ORG Sat Mar 15 13:00:31 2008 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EDBCA1065670 for ; Sat, 15 Mar 2008 13:00:31 +0000 (UTC) (envelope-from derek@computinginnovations.com) Received: from betty.computinginnovations.com (mail.computinginnovations.com [64.81.227.250]) by mx1.freebsd.org (Postfix) with ESMTP id 9885D8FC22 for ; Sat, 15 Mar 2008 13:00:30 +0000 (UTC) (envelope-from derek@computinginnovations.com) Received: from p28.computinginnovations.com (dhcp-10-20-30-100.computinginnovations.com [10.20.30.100]) (authenticated bits=0) by betty.computinginnovations.com (8.14.2/8.13.8) with ESMTP id m2FD08O8056809; Sat, 15 Mar 2008 08:00:09 -0500 (CDT) (envelope-from derek@computinginnovations.com) Message-Id: <6.0.0.22.2.20080315075146.02610a20@mail.computinginnovations.com> X-Sender: derek@mail.computinginnovations.com X-Mailer: QUALCOMM Windows Eudora Version 6.0.0.22 Date: Sat, 15 Mar 2008 07:59:57 -0500 To: Doug Hardie From: Derek Ragona In-Reply-To: References: <6.0.0.22.2.20080314171533.023f7c88@mail.computinginnovations.com> <511EC772-36FD-4799-B4A1-3AE690B6D048@lafn.org> <6.0.0.22.2.20080314202817.025de470@mail.computinginnovations.com> Mime-Version: 1.0 X-Antivirus: avast! (VPS 080314-0, 03/14/2008), Outbound message X-Antivirus-Status: Clean X-ComputingInnovations-MailScanner-Information: Please contact the ISP for more information X-ComputingInnovations-MailScanner: Found to be clean X-ComputingInnovations-MailScanner-From: derek@computinginnovations.com X-Spam-Status: No Content-Type: text/plain; charset="us-ascii"; format=flowed X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: freebsd-questions Subject: Re: C compiler issue perhaps? X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Mar 2008 13:00:32 -0000 At 09:49 PM 3/14/2008, Doug Hardie wrote: >On Mar 14, 2008, at 18:31, Derek Ragona wrote: > >>At 06:56 PM 3/14/2008, Doug Hardie wrote: >>>There is no code running at that point. Its just sitting there >>>waiting for me to enter a gdb command. >>> >>> >>>On Mar 14, 2008, at 15:16, Derek Ragona wrote: >>> >>>>At 05:10 PM 3/14/2008, Doug Hardie wrote: >>>>>I have a program I was testing with gdb. I was trying to figure >>>>>out >>>>>why c.rmonths was always zero when it should have been 6. Stepped >>>>>through using the gdb n command. Here is the output: >>>>> >>>>>(gdb) >>>>>215 c.rmonths = (edate - tdate) / >>>>>toMONTHS; >>>>>(gdb) >>>>>223 c.dial_in = u.dial_in[0]; >>>>>(gdb) >>>>>224 c.dsl = u.dsl[0]; >>>>>(gdb) p c.rmonths >>>>>$1 = 0 >>>>>(gdb) p c >>>>>$2 = {fa = 0, pwp = 0, disp_email = 0, imonths = 0, rmonths = 6, >>>>> type = 73 'I', cd = 0 '\0', dial_in = 82 'R', dsl = 0 '\0', >>>>> dsl_kit = 0 '\0', ip = 0 '\0', domain = 0 '\0', n_domain = 0 >>>>>'\0', >>>>> renewal = 89 'Y', program = "I\000\000"} >>>>>(gdb) p c->rmonths >>>>>$3 = 6 >>>>>(gdb) p c.rmonths >>>>>$4 = 6 >>>>> >>>>> >>>>>Notice, the first time i print it its zero. The second time its 6. >>>>>What gives here? I have seen this before but couldn't pin it down. >>>>>The program is not compiled with any optimization. It is in a >>>>>shared >>>>>library though. >>>> >>>>It is hard to tell without the code you used. I would put some >>>>printf's in the code and see what and when that variable gets set to >>>>in actual running code. >>>> >>>> -Derek >> >>I understand it is waiting at a breakpoint in gdb. What I meant was >>put printf's in your code and run the program and look at the >>output. You can use fprintf's to stderr if your prefer and just >>look at the stderr output. >> >>It is hard to diagnose what could be a compiler error, or a coding >>error. Remember in C you can do many things you really shouldn't. >>It is also advisable to run lint over your source code too. > >All that lint shows is it doesn't like comments using // and lots of >errors in /usr/include files. This sounds more like a c++ program. c++ does a lot of variable initiation in code you usually won't see. If this is a c++ program, put conditional printf's or cout's in to check the code at actual runtime rather than in the debugger. You may want to use asserts. -Derek -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.