一个C++小程序调试过程记录

本文描述了如何将一个WindowsC++项目(BookshopManagementSystemUsingC++)移植到Linux环境,包括MySQL的安装、配置,以及使用GDB进行C++代码的调试过程,重点在于voidbooks::add()函数的调试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Top 20 C++ Projects With Source Code [2024 Update]icon-default.png?t=N7T8https://www.interviewbit.com/blog/cpp-projects/

这个网页有一些简单的C++程序的源码,闲来无事,把第一个程序(Bookshop Management System Using C++)的源码下载了下来。

源文件就只有一个.cpp文件,确实是简单,但是看了一下,明显是为windows平台写的呀,而我的环境是Linux,那就直接给改造成Linux下的吧。

头文件里windows.h肯定是不能包含的了,另一个conio.h也提示找不到,search了一下,这个应该也是windows下的,那也不要了。

大概浏览了一下代码,需要MySQL数据库,而我的系统里还没装,那第一步就是准备运行环境。

MySQL和对应的开发库安装

sudo apt install mysql-server libmysqlclient-dev

安装这两个包,其它需要的包会自动安装,比如命令行客户端mysql-client等。

安装好MySQL之后,发现登陆有问题,经过search,在mysql - ERROR 1698 (28000): Access denied for user 'root'@'localhost' - Stack Overflow

找到了答案,选择里面提到的方案2设置,就可以用Ubuntu的账号登陆mysql了。注意,现在的版本重启服务一般都用systemctl restart mysql了。

按照Bookshop-Management-System-CPP-Project/README.md at master · aryan-khanijo/Bookshop-Management-System-CPP-Project · GitHub

这里面说的创建好数据库和表。如果对sql不熟悉,可以参考这个网页,一边看,一边试,基本的操作很容易学会。这个网站很好用,右边栏直接找到需要的命令看就可以了。

MySQL Tutorial - Learn MySQL Fast, Easy and Fun. 

C语言操作mysql数据库接口

对于用到的API的参考,可以到下面这个网站去查询。

MySQL :: MySQL 8.0 C API Developer Guide :: 5.4.84 mysql_store_result()

注意编译时需要加上mysqlclient库

g++ -o BookMgt -g BookShopManagement.cpp -lmysqlclient

调试void books::add()函数

这个程序各个类的操作都是类似的,无非是在某个表格中添加,更新,删除记录。所以我就找了一个函数来调试,即void books::add(),就是增加一本新的图书,录入图书的书名,作者,价格,数量等信息。在调试过程中,我发现原本的程序在windows上多半也有点问题,或者不完善。

为了了解mysql调用的返回值里到底是什么,又安装了gdb,然后在vscode里建立一个简单的launch.json,这样就可以直接在vscode里debug了。

//launch.json
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/BookMgt",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

程序运行完后,可以到mysql里验证查看。

 

可以运行的源码:(注意,只调试了void books::add()这一个函数)

链接: https://pan.baidu.com/s/1IiIoby0D1pnxb6AIIa08gg 提取码: frgg 复制这段内容后打开百度网盘手机App,操作更方便哦 
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值