Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 访问类的std::字符串时崩溃_C++_Linux_Stdstring_Coredump - Fatal编程技术网

C++ 访问类的std::字符串时崩溃

C++ 访问类的std::字符串时崩溃,c++,linux,stdstring,coredump,C++,Linux,Stdstring,Coredump,我有以下几点建议 Program terminated with signal 11, Segmentation fault. #0 0xb5b1c2f8 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::basic_string<char, std::char_traits<char>, std::all

我有以下几点建议

Program terminated with signal 11, Segmentation fault.
#0  0xb5b1c2f8 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ()
   from /arm-none-linux-gnueabi/libc_m/usr/lib/libstdc++.so.6
#0  0xb5b1c2f8 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ()
   from /arm-none-linux-gnueabi/libc_m/usr/lib/libstdc++.so.6
#1  0x00964f5c in Qct::OamClientUtil::getRsp (this=<value optimized out>)
at /Agent/include/oamClientUtil.hpp:92
#2  0x00902118 in MapPM::sendCollect (this=0xb4af9928) at /gent/src/mapPM.cc:557
#3  0x00921dc0 in Agent::handlePMCollectReq (this=<value optimized out>, buf=0xb335ccb0)
at /Agent/src/Agent.cc:5671
#4  0x0095deb4 in AgentRxHandler (handle=<value optimized out>, buf=0xb335ccb0)
at /Agent/src/uslAgent.cc:398
#5  0x0080f364 in uslDCTEntry (dct=20401048) at /usl/src/lcid/uslDCT.cc:253
#6  0x009c867c in TASK::taskEntryPoint (params=0x1375098) at /emvxworks/taskLib.cpp:224
#7  0x009c7bbc in pthreadw_taskentry (arg=<value optimized out>) at /emvxworks/pthread_wrapper.cpp:786
#8  0xb59a6120 in start_thread (arg=0xb4aff460) at pthread_create.c:307
#9  0xb592e9f8 in nfsservctl ()
from /CodeSourcery/4.6.3-2012.03-57/arm-none-linux-gnueabi/libc_m/lib/libc.so.6
Backtrace stopped: frame did not save the PC 
程序以信号11终止,分段故障。
#std::basic_string::basic_string(std::basic_string const&)中的0 0xb5b1c2f8
来自/arm none-linux-gnueabi/libc_m/usr/lib/libstdc++.so.6
#std::basic_string::basic_string(std::basic_string const&)中的0 0xb5b1c2f8
来自/arm none-linux-gnueabi/libc_m/usr/lib/libstdc++.so.6
#Qct::OamClientUtil::getRsp中的1 0x00964f5c(this=)
at/Agent/include/oamClientUtil.hpp:92
#2 0x00902118位于/gent/src/MapPM.cc:557的MapPM::sendCollect(this=0xb4af9928)中
#代理中的3 0x00921dc0::handlePMCollectReq(this=,buf=0xb335ccb0)
at/Agent/src/Agent.cc:5671
#AgentRxHandler中的4 0x0095deb4(句柄=,buf=0xb335ccb0)
at/Agent/src/uslAgent.cc:398
#5 0x0080f364,位于/usl/src/lcid/uslDCT.cc:253的uslDCTEntry(dct=20401048)中
#6 0x009c867c位于/emvxworks/taskLib.cpp:224的TASK::taskEntryPoint(参数=0x1375098)中
#在/emvxworks/pthread_wrapper.cpp:786的pthread w_taskentry(arg=)中的7 0x009c7bbc
#在pthread_create.c:307处的start_线程(arg=0xb4aff460)中的8 0xb59a6120
#nfsservctl()中的9 0xb592e9f8
from/codesource/4.6.3-2012.03-57/arm none-linux-gnueabi/libc_m/lib/libc.so.6
回溯已停止:帧未保存电脑
我很困惑一个简单的字符串是如何导致崩溃的

由于代码相当大,我现在将粘贴相关的类。如果需要,将添加更多

/Agent/include/oamClientUtil.hpp:92

37    class OamClientUtil
38    {
39    public:
40        OamClientUtil();
41
42        virtual
43        ~OamClientUtil();
44
45        
46        void
47        initOamProxyConn();
48
49        void
50        setBatch(
51            OamClients& batch
52        );
53
54        /// load oam transactions from a file
55        /// and convert them to a list of oam client transactions
56        bool
57        loadTrxFromFile(
58            std::string& batchfilename
59        );
60
61        /// actual processing the list of transactions
62        MgmtResult
63        run();
64
65        bool
66        isGood();
67
68        /// return the dryrun flag
69        bool
70        isDryrun();
71
72        /// set the dryrun flag
73        bool
74        isDryrun(bool flag);
75
76        const OamErrorString&
77        errorString() const;
78
79        
80        void
81        initRsp() {
82            getRsp_ = "";
83        }
84        void
85        initKeyRsp() {
86            getKeysRsp_ = "";
87        }
88
89        
90        std::string
91        getRsp() {
92            return getRsp_;
93        }
94        std::string
95        getKeysRsp() {
96            return getKeysRsp_;
97        }
98        bool
99        getKeysLast() {
100            return getKeysLast_;
101        }
102    private:
103        static const unsigned REQ_TIMEOUT_SECS = 10;
104
105        /// send get request
106        MgmtResult
107        sendGetReq(
108            OamClientTrxPtr trx
109        );
110
111        /// send getKeys request
112        MgmtResult
113        sendGetKeysReq(
114            OamClientTrxPtr trx
115        );
116        /// send set request
117        MgmtResult
118        sendSetReq(
119            OamClientTrxPtr trx
120        );
121
122        /// send clear request
123        MgmtResult
124        sendClearReq(
125            OamClientTrxPtr trx
126        );
127
128        /// process the list of transactions
129        MgmtResult
130        processTransactionList(
131            OamClientTrxList& trxlist ///< The list of transaction to be processed
132        );
133
134        /// process one transaction
135        MgmtResult
136        processTransaction(
137            OamClientTrxPtr trx ///< The transaction to be processed
138        );
139
140        /// print content of one transaction
141        void
142        printRequests(
143            OamClientTrxPtr trx
144        );
145
146        void
147        indCallback(
148            unsigned int msgId,
149            QctUint8_t* indMsgBuffer,
150            unsigned int indMsgBufferLength);
151
152        
153        static ProvisioningPtr
154        initProvisioningPtr();
155
156        
157        static MgmtXmlPtr
158        initMgmtXmlPtr();
159
160        QmiClient qmiClient_;
161        MgmtXmlPtr mgmtXmlPtr_;
162        OamClients batch_;
163        SerialStreamFixedBuf<QMI_FSM_OAM_CLIENT_MAX_LENGTH_V04> sstream_;
164        QctUint16_t trxid_;
165
166        std::string batchfilename_;
167        bool isDryrun_; 
168        bool isGood_;
169        QctUint32_t oamSessionId_;
170        OamErrorString errorMsg_;
171        std::string getRsp_; 
172        std::string getKeysRsp_; 
173        bool getKeysLast_; 
174        ProvisioningPtr provisioningPtr_;
175    };
176




#2  0x00902118 in MapPM::sendCollect (this=0xb4af9928) at /Agent/src/mapPM.cc:557



    549Qct::MgmtResult MapPM::sendCollect()
    550{
    551    clUtil_.initRsp();
    552    clUtil_.setBatch(oamClients_);
    553    Qct::MgmtResult mr = clUtil_.run(); // process every transaction in oamClients_
    554    if (mr == Qct::MGMT_RESULT_FAIL) {
    555      //return Qct::MGMT_RESULT_FAIL;
    556    }
    557    return makePMFile(clUtil_.getRsp());
    558
    }

clUtil_ is object of Qct::OamClientUtil  
    Qct::OamClientUtil clUtil_;

/Agent/src/Agent.cc:5671

    5671    Qct::MgmtResult result = mapPM.sendCollect();

/Agent/src/uslAgent.cc:398

    400      case OAM_AGENT_PMSETUP:
    401          oamAgent.handlePMSetupReq(buf);
    402          break;
/Agent/include/oamClientUtil.hpp:92
37级奥姆克利恩图蒂尔酒店
38    {
39公众:
40奥姆克林图尔();
41
42虚拟的
43~OamClientUtil();
44
45
46无效
47 initOamProxyConn();
48
49无效
50次挫折(
51 OAM客户和批次
52        );
53
54///从文件加载oam事务
55///并将其转换为oam客户端事务列表
56布尔
57 loadTrxFromFile(
58 std::string和batchfilename
59        );
60
61///实际处理事务列表
62 MgmtResult
63 run();
64
65布尔
66是好的();
67
68///返回dryrun标志
69布尔
70 isDryrun();
71
72///设置干运行标志
73布尔
74 isDryrun(布尔标志);
75
76常量OamErrorString&
77 errorString()常量;
78
79
80无效
81 initRsp(){
82 getRsp_u=“”;
83        }
84无效
85 initKeyRsp(){
86 getKeysRsp_=“”;
87        }
88
89
90标准::字符串
91 getRsp(){
92返回getRsp;
93        }
94标准::字符串
95 getKeysRsp(){
96返回getKeysRsp;
97        }
98布尔
99 getKeysLast(){
100返回getKeysLast;
101        }
102私人:
103静态常数无符号请求超时时间=10;
104
105///send-get请求
106 MgmtResult
107 sendGetReq(
108 OAMClientTtr trx
109        );
110
111///发送getKeys请求
112 MgmtResult
113 sendGetKeysReq(
114 OAMClientTtr trx
115        );
116///发送集合请求
117 MgmtResult
118 sendSetReq(
119 OAMClienttr trx
120        );
121
122///发送清除请求
123mgmtresult
124 sendClearReq(
125 OAMClienttr trx
126        );
127
128///处理事务列表
129mgmtresult
130处理事务列表(
131 OamClientTrxList&trxlist//<要处理的事务列表
132        );
133
134///处理一个事务
135mgmtresult
136处理事务(
137 OamClientTrxPtr trx//<要处理的事务
138        );
139
140///打印一个事务的内容
141无效
142打印请求(
143 OAMClientTtr trx
144        );
145
146无效
147.回拨(
148无符号整数msgId,
149 QctUint8_t*indMsgBuffer,
150无符号整数indMsgBufferLength);
151
152
153静态供应GPTR
154 initProvisioningPtr();
155
156
157静态MgmtXmlPtr
158 initMgmtXmlPtr();
159
160 QmiClient QmiClient;
161 MgmtXmlPtr MgmtXmlPtr;
162个OAM客户;
163串行流固定BUF SSSTREAM_u2;;
164 QctUint16_t trxid;
165
166标准::字符串批处理文件名;
167 bool isDryrun;
168布尔是好的;
169 QctUint32_t oamSessionId_u3;;
170 OamErrorString ERRORMMSG_389;;
171标准::字符串getRsp;
172 std::字符串getKeysRsp;
173 bool getKeysLast;
174供应GPTR供应GPTR;
175    };
176
#2 0x00902118位于/Agent/src/MapPM.cc:557的MapPM::sendCollect(this=0xb4af9928)中
549Qct::MgmtResult MapPM::sendCollect()
550{
551 clUtil.initRsp();
552 clUtil.setBatch(oamClients);
553 Qct::MgmtResult mr=clUtil_u2;.run();//处理oamClients中的每个事务_
554如果(mr==Qct::管理结果\失败){
555//返回Qct::管理结果失败;
556    }
557返回makePMFile(clUtil.getRsp());
558
}
clUtil是Qct::OamClientUtil的对象
Qct:OamClientUtil clUtil;
/Agent/src/Agent.cc:5671
5671 Qct::MgmtResult result=mapPM.sendCollect();
/Agent/src/uslAgent.cc:398
400箱OAM\U代理\U PMU设置:
401 oamAgent.handlePMSetupReq(buf);
402断裂;

我认为您的程序在这一点上崩溃不应该有任何正当的理由——这是假设

  • 所有代码都是用同一个编译器编译的

  • 头文件在不同文件中的编译方式不同(即,更改头文件后,您没有忘记重新编译某些内容)

我认为你很可能在其他地方有内存损坏,当你访问