debugging 相关问题

调试是在计算机程序中查找和修复错误的有条不紊的过程。 **重要说明:**此标记仅用于调试技术或调试过程的问题,而不是请求帮助调试代码。

GDB与预期的函数名称和地址不同 我试图捕获孩子何时处决流产。 以下是MCVE,应该对我要做的事情有一个了解。 #include

我正在试图捕获孩子何时处决堕胎。 以下是一个MCVE,应该对我要做的事情有一个了解。 #include <iostream> #include <cstdio> #include <iomanip> //to make things legible #include <sys/ptrace.h> #include <sys/wait.h> #include <libunwind-ptrace.h> #include <unistd.h> #include <sys/types.h> using namespace std; int getBacktrace(pid_t pid) { int rv = 0; unw_addr_space_t as = unw_create_addr_space(&_UPT_accessors, 0); if(!as) { return rv; } void *context = _UPT_create(pid); unw_cursor_t cursor; if(unw_init_remote(&cursor, as, context) == 0) { cout << "Abort: " << std::hex << (long)*abort << endl; do { unw_proc_info_t pi; if(unw_get_proc_info(&cursor, &pi) >= 0) { if((long)pi.start_ip == (long)abort) { cout << "abort found!\n"; //do some recovery stuff here.so WIFEXITED won't work and WIFSIGNALED can give a false alarm rv = 1; break; } //Just for fun, let's print the backtrace unw_word_t offset, pc; char sym[4096]; if(unw_get_reg(&cursor, UNW_REG_IP, &pc) != 0) { cout << "Unknown PC\n"; } else { cout << "0x" << std::hex << pc << " "; } if(unw_get_proc_name(&cursor, sym, sizeof(sym), &offset) != 0) { cout << "<unknown>\n"; } else { cout << sym << "+0x" << std::hex << offset << endl; } cout << "\tfunction range: " << std::hex << pi.start_ip << "-" << pi.end_ip << endl; } }while(unw_step(&cursor) > 0); cout << endl << endl; //Add spacing to make it easier to read. } if(context) { _UPT_destroy(context); } cout << std::dec; return rv; } int childFunction() { //This is just an example function maybe it throws maybe it doesn't sleep(5); throw 42; } int main() { pid_t childPid; if((childPid = fork()) == 0) { ptrace(PTRACE_TRACEME, 0, nullptr, nullptr); //child childFunction(); } else { while(true) { waitpid(childPid, nullptr, 0); if(getBacktrace(childPid)) { //do some logging or functionality here cout << "Child aborted\n"; break; } ptrace(PTRACE_CONT, childPid, nullptr, nullptr); } } } ,无论如何,我的输出类似于以下内容: Abort: 3fffac87c3b8 0x3fffac6e4bc0 <unknown> function range: 3fffac6e4a70-3fffac6e4c30 0x3fffac6c9540 <unknown> function range: 3fffac6c92f8-3fffac6c95a0 0x3fffaca9e338 <unknown> function range: 3fffaca9e1f0-3fffaca9e434 0x3fffaca9a964 <unknown> function range: 3fffaca9a940-3fffaca9a988 0x3fffaca9aa28 <unknown> function range: 3fffaca9aa10-3fffaca9aa38 0x3fffaca9af18 <unknown> function range: 3fffaca9aea0-3fffaca9af28 0x12af30a88 <unknown> function range: 12af30a38-12af30a98 0x12af30af0 <unknown> function range: 12af30a98-12af30b98 0x3fffac6c98c4 <unknown> function range: 3fffac6c9770-3fffac6c9a34 0x3fffac6c9ae0 <unknown> function range: 3fffac6c9a40-3fffac6c9aec 我知道,从顶部的第二帧是流产。但是,这些地址都没有匹配。 如果我与GDB进行调试,我明白了: [1 我有几个问题: 为什么GDB而不是显示__GI_abort而不是显示为函数名称? 我如何得到abort的地址?我只是尝试将其交换__GI_abort,但是G ++声称它没有声明。 为什么GDB而不是显示__gi_abort而不是堕胎为函数名称? 这些是彼此的别名(请注意,它们处于同一地址): abort您无法使用readelf -Ws glibc-build/libc.so | grep 'abort$' 7155: 0000000000024ec0 116 FUNC LOCAL DEFAULT 15 __GI_abort 7947: 0000000000024ec0 116 FUNC GLOBAL DEFAULT 15 abort 符号,因为它是本地的__GI_abort。 在我的Linux系统libc.so.6系统中,您的MCVE可以工作,而我没有立即发现任何问题。 x86_64

回答 1 投票 0

现在我尝试使用Google搜索Google,但找不到从终端调试Dotnet Core应用程序的任何真实方法。

没有真正的命令行调试器。 coreclr开发人员使用一个插件for

回答 1 投票 0

int addnu ...

main.c:

回答 1 投票 0

视觉工作室中多个hitCount时间的条件断点

我如何设置要在多个hitCounts上击中的断点。 像上图一样,我希望当命中率为234、345,567,1234、2314等时,有时会被击中。 它不允许我放一个com ...

回答 2 投票 0





在HTML填充的JavaScript中,为服务器打开Eventsource打破了Chrome的源和DevTool中的网络选项卡吗? 我一直在研究一个新的JavaScript项目,以渲染一堆在Python中收集并流到前端的数据的前端。引起我很多trou的东西...

#!/usr/bin/env python3 from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer from threading import Thread import time from urllib.parse import urlparse, parse_qs index = ''' <html> <head> <title>devtools lockup demo</title> </head> <body> <div id='counter'>No data received yet.</div> <script type='text/javascript' defer> /*TODO: this doesn't really need to be a class.*/ class DataRelay { constructor() { const stream_url = '/stream/'; this.event_source = new EventSource(stream_url); this.event_source.onmessage = (event) => { document.getElementById('counter').textContent = event.data; }; this.event_source.onerror = (error) => { console.error('event_source.onerror:', error); }; console.log('data stream handler is set up'); } } let data_relay = new DataRelay(); </script> </body> ''' def encode_as_wire_message(data): # The "data: " preamble, the "\n\n" terminator, and the utf8 encoding are all # mandatory for streams. return bytes('data: ' + data + '\n\n', 'utf8') #TODO: Get this constant in the class class RequestHandler(BaseHTTPRequestHandler): def add_misc_headers(self, content_type): self.send_header('Content-type', content_type) self.send_header('Cache-Control', 'no-cache') self.send_header('Connection', 'keep-alive') self.send_header('Access-Control-Allow-Credentials', 'true') self.send_header('Access-Control-Allow-Origin', '*') def serve_index(self): self.send_response(200) self.add_misc_headers('text/html') self.end_headers() self.wfile.write(bytes(index, 'utf8')) def serve_stream(self): self.send_response(200) self.add_misc_headers('text/event-stream') self.end_headers() print('Beginning to serve stream...') for x in range(1000000): message = encode_as_wire_message(str(x)) print(message) self.wfile.write(message) self.wfile.flush() time.sleep(1.0) def do_GET(self): parsed_url = urlparse(self.path) if parsed_url.path == '/': self.serve_index() elif parsed_url.path == '/stream/': self.serve_stream() def run(server_class=ThreadingHTTPServer, handler_class=RequestHandler): server_address = ('', 8000) # serve on all interfaces, port 8000 httpd = server_class(server_address, handler_class) print('starting httpd... Open a connection to http://localhost:8000') httpd.serve_forever() run()

回答 1 投票 0

XCODE 6在拔下设备时如何禁用“与iPhone失去连接”消息?

UPON升级到Xcode 6,每次我拔下运行已部署并从Xcode启动的设备时,我都会得到应用范围范围的弹出框,说“丢失了连接到[设备名称]和quo ...

回答 2 投票 0

视觉工作室代码C ++:如何在手表/当地人中显示类型和地址

I最近改用了C ++编程的Visual Studio代码。 我现在面临着一个相当讨厌的错误(一些访问释放的内存),因此我需要更多地详细介绍记忆中的位置。 它...

回答 1 投票 0

如何在wkwebview

用作指南,并成功地使WebView显示了我的WebApp。所以现在

回答 2 投票 0

回答 2 投票 0



有一种方法可以将所有本地和全局变量及其值动态复制到剪贴板或vs代码中的JSON文件?

是否有内置的功能,扩展或解决方法,使我可以将所有变量及其值动态地将所有变量导出到我的剪贴板或JSON文件中?这对于与同事进行调试或分享我计划的状态非常有帮助。 我目前正在使用JavaScript,但是我也很好奇是否可以在Python或C#等其他语言中进行这种情况。任何指导或建议将不胜感激。

回答 0 投票 0

discordbot troll超时命令

我想通过制作一个不和谐的机器人来自动将他淘汰1分钟,而无需用户和长度,只有他,只有他和一分钟。当我运行命令dep ...

回答 1 投票 0


如何在WebStorm中设置Nest.js调试器

有人可以解释如何使用Nest.js设置WebStorm调试器?现在我设置这样的设置: 但这无效,我会遇到错误: 错误无效命令:/TMP/B7A1C83C-0578-453B-B899-D094359...

回答 1 投票 0

如何使用我的CC0012错误消息来帮助我查找编译错误

okay,我是新手COBOL,并在编写代码时学习如何调试。目前,在编译代码时,我会遇到CC0012错误。我不确定如何缩小搜索我的co的搜索...

回答 1 投票 0

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.