Debugging EclipseGDB赢得';t调试Cygwin可执行文件

Debugging EclipseGDB赢得';t调试Cygwin可执行文件,debugging,gdb,eclipse-cdt,Debugging,Gdb,Eclipse Cdt,我在Windows7 PC上使用Cygwin创建了一个简单的Hello world可执行文件,并使用:gcc Hello.c-g构建它 我可以在可执行文件的命令行中使用gdb,没有问题 然后在Eclipse Kepler中,我使用以下设置创建了调试配置: -C/C++应用程序具有可执行文件的完整路径 -它与项目无关;项目框为空。工作区中没有任何项目。 -选择“禁用自动生成” -选择“启动时停止:主” -GDB调试器设置为C:\cygwin64\bin\GDB.exe -我将完整路径添加到包含he

我在Windows7 PC上使用Cygwin创建了一个简单的Hello world可执行文件,并使用:gcc Hello.c-g构建它

我可以在可执行文件的命令行中使用gdb,没有问题

然后在Eclipse Kepler中,我使用以下设置创建了调试配置: -C/C++应用程序具有可执行文件的完整路径 -它与项目无关;项目框为空。工作区中没有任何项目。 -选择“禁用自动生成” -选择“启动时停止:主” -GDB调试器设置为C:\cygwin64\bin\GDB.exe -我将完整路径添加到包含hello.c的目录中,并将可执行文件添加到“源代码查找路径”中

我最初的问题是使用TI的CodeComposer Studio(它基于EclipseKepler)来调试一个单元测试可执行文件,该可执行文件是用shell中手工编写的makefile创建的。下载EclipseKepler并使用一个简单的HelloWorld程序可以将问题归结为基本问题。我在CCS或常规Eclipse中遇到了同样的问题

问题是,当我尝试运行此调试配置时,gdb跟踪控制台向我显示:

290997 2-gdb-set断点挂起

290999 2^完成

290999(gdb)

290999 3-gdb-set在上的拨叉上分离

2910003^完成

291000(gdb)

291000 4-enable-pretty-printing

291001 4^完成

291001(gdb)

291001 5-gdb-set python打印堆栈无

291002 5^完成

291002(gdb)

291002 6-gdb-set打印对象打开

291003 6^完成

291003(gdb)

291003 7-gdb-set打印七位字符串

291004 7^完成

291004(gdb)

291004 8-gdb-set主机字符集UTF-8

291005 8^完成

291005(gdb)

291005 9-gdb-set目标字符集WINDOWS-1252

291006 9^完成

291006(gdb)

291006 10 gdb集目标宽字符集UTF-16

291007 10^完成

291007(gdb)

291007 11source.gdbinit

291008&“source.gdbinit\n”

291008&“.gdbinit:没有这样的文件或目录。\n”

291008 11^错误,msg=“.gdbinit:没有这样的文件或目录。”

291009(gdb)

291009 12 gdb设置目标异步关闭

291010 12^完成

291010(gdb)

291010 13 gdb设置自动solib附加模块

2910113^完成

291011(gdb)

291016 14文件执行和符号--线程组i1 C:/intelligented/scratch/a.exe

291051 14^完成

291051(gdb)

291051 15 gdb显示——线程组i1语言

291052 15^完成,value=“自动”

291052(gdb)

291052 16 gdb集合--线程组i1语言c

291053 16^完成

291053(gdb)

291053 17数据求值表达式--螺纹组i1“sizeof(void*)”

291054 17^完成,value=“8”

291054(gdb)

291054 18 gdb集合--线程组i1语言自动

291055 18^完成

291055(gdb)

291055 19解释器执行——线程组i1控制台“show endian”

291056~“自动设置目标端号(当前为小端号)\n”

291056 19^完成

291056(gdb)

291057 20断开镶块--螺纹组i1-t-f主螺纹

291058 20^完成,bkpt= {number=“1”,type=“breakpoint”,disp=“del”,enabled=“y”,addr=“0x00000001004010dd”\ func=“main”,file=“hello.c”,fullname=“/cygdrive/c/intelligend/scratch/hello.c”,line=“5”,线程组\ s=[“i1”],times=“0”,original location=“main”}

291059(gdb)

291060 21 exec run--线程组i1

291075=线程组已启动,id=“i1”,pid=“10376”

291077 22列出线程组--可用

291077=线程已创建,id=“1”,组id=“i1”

291077~“[新线程10376.0x22c8]\n”

291077 21^正在运行

291077*正在运行,线程id=“全部”

291077(gdb)

291080=线程已退出,id=“1”,组id=“i1”

291080=线程组已退出,id=“i1”

291080 21^错误,msg=“启动期间程序退出,代码为0xc0000135。”

291080(gdb)

291080 22^错误,msg=“现在无法获取数据。”

291080(gdb)

291088 23 gdb出口

291090 23^出口

根据我读到的一些建议,在命令行中,我使用以下命令启动了gdb: gdb——解释器=mi a.exe 并输入了日志中显示的相同命令。当我使用命令21时,我会得到不同的输出:

(gdb) 21执行运行--线程组i1 =线程组已启动,id=“i1”,pid=“7244” =已创建线程,id=“1”,组id=“i1” ~“[新线程7244.0xca4]\n” 21^跑步 *正在运行,线程id=“全部” (gdb) =已加载库,id=“/cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll”,目标名称=“/cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll”,主机名=“/cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll”,已加载符号=“0”,线程组=“i1” =加载的库,id=“/cygdrive/c/WINDOWS/system32/kernel32.dll”,目标名称=“/cygdrive/c/WINDOWS/system32/kernel32.dll”,主机名=“/cygdrive/c/WINDOWS/system32/kernel32.dll”,加载的符号=“0”,线程组=“i1” =加载的库,id=“/cygdrive/c/WINDOWS/system32/KERNELBASE.dll”,目标名称=“/cygdrive/c/WINDOWS/system32/KERNELBASE.dll”,主机名=“/cygdrive/c/WINDOWS/system32/KERNELBASE.dll”,加载的符号=“0”,线程组=“i1” =加载的库,id=“/cygdrive/c/WINDOWS/System32/SYSFER.DLL”,目标名称=“/cygdrive/c/WINDOWS/System32/SYSFER.DLL”,主机名=“/cygdrive/c/WINDOWS/System32/SYSFER.DLL”,加载的符号=“0”,线程组=“i1” =加载的库,id=“/usr/bin/cygwin1.dll”,目标名称=“/usr/bin/cygwin1.dll”,主机名=“/usr/bin/cygwin1.dll”,加载的符号=“0”,线程组=“i1” =加载的库,id=“/cygdrive/c/WINDOWS/system32/psapi.dll”,目标名称=“/cygdrive/c/WINDOWS/system32/psapi.dll”,主机名=“/cygdrive/c/WINDOWS/system32/psapi.dll”,加载的符号=“0”,线程组=“i1” =已创建线程,id=“2”,组id=“i1” ~“[新线程7244.0x1ba8]\n” *正在运行,线程id=“全部” =修改断点,bkpt={number=“1”,type=“breakpoint”,disp=“del”,enabled=“y”,addr=“0x00000001004010dd”,func=“main”,file=“hello.c”,fullname=“/cyg