注册 登录
编程论坛 C++教室

gdb调试问题

charderkk 发布于 2010-08-25 11:11, 1632 次点击
用vi写好的程序8.25.5.cpp用mingw编译不成功,于是用gdb调试,再cmd中键入gdb 8.25.5.cpp 前面出来一些版本信息,后来有一句E:\cpp/8.25.5.cpp:not in executable format:File format not recognized
请问是怎么回事 谢了
6 回复
#2
weble2010-08-25 23:51
编译不成功你是怎么调试的
#3
pangding2010-08-26 00:08
编译不成功还调试什么?有語法错误要想办法改好,能成功编译之后才能调试。
gcb 是用于调试可执行文件的,比如 windows 下的 exe。为了方便调试,你可以用 g++ -g ***.cpp 的命令,-g 是指在编译时嵌入源码用于调试。当然一定要能成功编译才行,如果有 error 那就要先改語法错误。

你进了 gdb 可能也不会用。先告诉你几个常用命令:q 是退出 gdb,h 是帮助。
start 是开始,开始之后可以用 l (L,不是 1)列出代码。n 是下一条语句(如果涉及函数调用,不进入函数),s 进入函数。

先不介绍太多吧,反正不知道干什么的时候,知道输入 q 回车是退出就行了。它要问你退不退,你就回答 y。
#4
charderkk2010-08-31 15:17
回复 3楼 pangding
谢谢指点,还想问一下,既然一个程序已经可以运行了,调试又是起什么作用的?另外还有个小问题,今天对照书上的一个程序进行编译时,出现如下提示今This application has requested the  
Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.想问下怎么
回事?
#include<iostream>
#include<string>
using std::cout;using std::endl;using std::cin;using std::string;
int main()
{ // say what standard-library name we use
    string name;
  cout<<"Please enter your name: ";
  cin>>name;
  
  const string greeting="hello, "+greeting+" !";
  const int pad=2;
  const int rows=pad*2+3;
  const string::size_type cols=greeting.size()+pad*2+2;
  //write a blank line to sepeater input and output
  cout<<endl;
  //  invariant:we have written r rows so far
  for(int r=0;r!=rows;++r){
    string::size_type c=0;
    while(c!=cols){
    if(r==pad+1&&c==pad+1){
        cout<<greeting;
        c+=greeting.size();
    }else{
        if(r==0||r==rows-1||c==0||c==cols-1)
            cout<< "*";
        else
            cout<< " ";
        ++c;
    }
    }
 }
 return 0;
}
#5
pangding2010-08-31 18:28
调试为的不是纠正语法错误。
编过一段程序都应该知道,写完程序之后,修正语法错误往往是最容易的一件事。但头痛的是,为什么语法无误的程序却不能按预期完成任务。调试是为了解决这个问题的。
 
还有你写的这个程序不知道为什么会出那个错误。是不是你的编译器没有正确安装呀?你用的是什么?
#6
charderkk2010-09-04 15:49
回复 5楼 pangding
哦 程序安装好了 后来仔细找了找发现是有一句话写错了const string greeting="hello, "+greeting+" !"; 后面的greeting应该是name才行
#7
vfdff2010-09-05 03:29
回复 4楼 charderkk
程序已经可以运行,执行功能不一定正确呀
1