简体   繁体   中英

Hot to use gdb in macos

I always use gdb in Linux and it works ok, this is my first time use gdb in mac which is different with Linux.

(gdb) b main
Breakpoint 1 at 0x100000ec4
(gdb) r
Starting program: /Users/vinllen/code/tmp/lhm/homework
warning: Could not open OSO archive file "/BinaryCache/corecrypto/corecrypto-233.1.2~26/Symbols/BuiltProducts/libcorecrypto_static.a"
warning: `/BinaryCache/coreTLS/coreTLS-35.20.2~10/Objects/coretls.build/coretls.build/Objects-normal/x86_64/system_coretls_vers.o': can't open to read symbols: No such file or directory.
warning: Could not open OSO archive file "/BinaryCache/coreTLS/coreTLS-35.20.2~10/Symbols/BuiltProducts/libcoretls_ciphersuites.a"
warning: Could not open OSO archive file "/BinaryCache/coreTLS/coreTLS-35.20.2~10/Symbols/BuiltProducts/libcoretls_handshake.a"
warning: Could not open OSO archive file "/BinaryCache/coreTLS/coreTLS-35.20.2~10/Symbols/BuiltProducts/libcoretls_record.a"
warning: Could not open OSO archive file "/BinaryCache/coreTLS/coreTLS-35.20.2~10/Symbols/BuiltProducts/libcoretls_stream_parser.a"

Breakpoint 1, 0x0000000100000ec4 in main ()
(gdb) l
No symbol table is loaded.  Use the "file" command.
(gdb) n
Single stepping until exit from function main,
which has no line number information.

It looks like command l and n cannot be execute correctly, what's the problem ?

Here is my Makefile:

objects = main.o conversion.o slitemlist.o uims.o testdrivers.o

homework:$(objects)
    g++ -o homework $(objects)

conversion.o: conversion.h base.h
slitemlist.o: slitemlist.h base.h
uims.o: conversion.h base.h conversion.h slitemlist.h
testdrivers.o: testdrivers.h

.PHONY: clean
clean:
    rm homework $(objects)

Here is my Makefile:

You will not have a good time debugging this program on Linux either: you've compiled it without debug symbols (the -g flag).

Your real question is not "how do I use GDB on MacOS", but rather "how do I write Makefile such that I can debug".

You should add a lines like this to your Makefile :

CFLAGS = -g
CXFLAGS = -g  # if building C++

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM