mirror of
https://github.com/vee1e/GDB-UI.git
synced 2026-09-02 11:17:22 +00:00
Added more Gdb Apis
This commit is contained in:
parent
cbde5832fd
commit
fdb657ffe9
2 changed files with 206 additions and 16 deletions
|
|
@ -1,10 +1,9 @@
|
|||
import unittest
|
||||
import json
|
||||
import tempfile
|
||||
import os
|
||||
from flask import Flask
|
||||
from flask_testing import TestCase # type: ignore
|
||||
from main import app
|
||||
from flask_testing import TestCase
|
||||
from main import app
|
||||
|
||||
class TestGDBRoutes(TestCase):
|
||||
def create_app(self):
|
||||
|
|
@ -12,35 +11,23 @@ class TestGDBRoutes(TestCase):
|
|||
return app
|
||||
|
||||
def setUp(self):
|
||||
# Create a temporary directory for compiling C++ programs
|
||||
self.temp_dir = tempfile.TemporaryDirectory()
|
||||
|
||||
# Compile a simple C++ program for testing
|
||||
compile_payload = {
|
||||
"code": "#include <iostream>\nint main() { std::cout << 'Hello, World!'; return 0; }",
|
||||
"name": "test_program",
|
||||
"temp_dir": self.temp_dir.name # Pass the temporary directory path
|
||||
}
|
||||
self.client.post('/compile', data=json.dumps(compile_payload), content_type='application/json')
|
||||
|
||||
def tearDown(self):
|
||||
# Clean up the temporary directory
|
||||
self.temp_dir.cleanup()
|
||||
|
||||
def test_compile_code(self):
|
||||
# Create a temporary directory for compiling the test program
|
||||
temp_dir = tempfile.TemporaryDirectory()
|
||||
|
||||
payload = {
|
||||
"code": "#include <iostream>\nint main() { std::cout << 'Hello, Universe!'; return 0; }",
|
||||
"name": "test_program2",
|
||||
"temp_dir": temp_dir.name # Pass the temporary directory path
|
||||
}
|
||||
response = self.client.post('/compile', data=json.dumps(payload), content_type='application/json')
|
||||
|
||||
# Clean up the temporary directory
|
||||
temp_dir.cleanup()
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTrue(response.json['success'])
|
||||
|
||||
|
|
@ -118,11 +105,67 @@ class TestGDBRoutes(TestCase):
|
|||
|
||||
def test_memory_map(self):
|
||||
memory_map_payload = {
|
||||
"name": "test_program"
|
||||
"name": "test_program"
|
||||
}
|
||||
response = self.client.post('/memory_map', data=json.dumps(memory_map_payload), content_type='application/json')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTrue(response.json['success'])
|
||||
|
||||
def test_continue_execution(self):
|
||||
continue_payload = {
|
||||
"name": "test_program"
|
||||
}
|
||||
response = self.client.post('/continue', data=json.dumps(continue_payload), content_type='application/json')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTrue(response.json['success'])
|
||||
|
||||
def test_step_over(self):
|
||||
step_over_payload = {
|
||||
"name": "test_program"
|
||||
}
|
||||
response = self.client.post('/step_over', data=json.dumps(step_over_payload), content_type='application/json')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTrue(response.json['success'])
|
||||
|
||||
def test_step_into(self):
|
||||
step_into_payload = {
|
||||
"name": "test_program"
|
||||
}
|
||||
response = self.client.post('/step_into', data=json.dumps(step_into_payload), content_type='application/json')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTrue(response.json['success'])
|
||||
|
||||
def test_step_out(self):
|
||||
step_out_payload = {
|
||||
"name": "test_program"
|
||||
}
|
||||
response = self.client.post('/step_out', data=json.dumps(step_out_payload), content_type='application/json')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTrue(response.json['success'])
|
||||
|
||||
def test_add_watchpoint(self):
|
||||
add_watchpoint_payload = {
|
||||
"variable": "var",
|
||||
"name": "test_program"
|
||||
}
|
||||
response = self.client.post('/add_watchpoint', data=json.dumps(add_watchpoint_payload), content_type='application/json')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTrue(response.json['success'])
|
||||
|
||||
def test_delete_breakpoint(self):
|
||||
set_breakpoint_payload = {
|
||||
"location": "main",
|
||||
"name": "test_program"
|
||||
}
|
||||
self.client.post('/set_breakpoint', data=json.dumps(set_breakpoint_payload), content_type='application/json')
|
||||
|
||||
delete_breakpoint_payload = {
|
||||
"breakpoint_number": 1,
|
||||
"name": "test_program"
|
||||
}
|
||||
response = self.client.post('/delete_breakpoint', data=json.dumps(delete_breakpoint_payload), content_type='application/json')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTrue(response.json['success'])
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
|
|
|||
|
|
@ -278,5 +278,152 @@ def memory_map():
|
|||
|
||||
return jsonify(response)
|
||||
|
||||
@app.route('/continue', methods=['POST'])
|
||||
def continue_execution():
|
||||
global program_name
|
||||
data = request.get_json()
|
||||
file = data.get('name')
|
||||
if program_name != file:
|
||||
start_gdb_session(f'{file}')
|
||||
|
||||
try:
|
||||
result = execute_gdb_command("continue")
|
||||
response = {
|
||||
'success': True,
|
||||
'result': result,
|
||||
'code': "execute_gdb_command('continue')"
|
||||
}
|
||||
except Exception as e:
|
||||
response = {
|
||||
'success': False,
|
||||
'error': str(e),
|
||||
'code': "execute_gdb_command('continue')"
|
||||
}
|
||||
|
||||
return jsonify(response)
|
||||
|
||||
@app.route('/step_over', methods=['POST'])
|
||||
def step_over():
|
||||
global program_name
|
||||
data = request.get_json()
|
||||
file = data.get('name')
|
||||
if program_name != file:
|
||||
start_gdb_session(f'{file}')
|
||||
|
||||
try:
|
||||
result = execute_gdb_command("next")
|
||||
response = {
|
||||
'success': True,
|
||||
'result': result,
|
||||
'code': "execute_gdb_command('next')"
|
||||
}
|
||||
except Exception as e:
|
||||
response = {
|
||||
'success': False,
|
||||
'error': str(e),
|
||||
'code': "execute_gdb_command('next')"
|
||||
}
|
||||
|
||||
return jsonify(response)
|
||||
|
||||
@app.route('/step_into', methods=['POST'])
|
||||
def step_into():
|
||||
global program_name
|
||||
data = request.get_json()
|
||||
file = data.get('name')
|
||||
if program_name != file:
|
||||
start_gdb_session(f'{file}')
|
||||
|
||||
try:
|
||||
result = execute_gdb_command("step")
|
||||
response = {
|
||||
'success': True,
|
||||
'result': result,
|
||||
'code': "execute_gdb_command('step')"
|
||||
}
|
||||
except Exception as e:
|
||||
response = {
|
||||
'success': False,
|
||||
'error': str(e),
|
||||
'code': "execute_gdb_command('step')"
|
||||
}
|
||||
|
||||
return jsonify(response)
|
||||
|
||||
@app.route('/step_out', methods=['POST'])
|
||||
def step_out():
|
||||
global program_name
|
||||
data = request.get_json()
|
||||
file = data.get('name')
|
||||
if program_name != file:
|
||||
start_gdb_session(f'{file}')
|
||||
|
||||
try:
|
||||
result = execute_gdb_command("finish")
|
||||
response = {
|
||||
'success': True,
|
||||
'result': result,
|
||||
'code': "execute_gdb_command('finish')"
|
||||
}
|
||||
except Exception as e:
|
||||
response = {
|
||||
'success': False,
|
||||
'error': str(e),
|
||||
'code': "execute_gdb_command('finish')"
|
||||
}
|
||||
|
||||
return jsonify(response)
|
||||
|
||||
@app.route('/add_watchpoint', methods=['POST'])
|
||||
def add_watchpoint():
|
||||
global program_name
|
||||
data = request.get_json()
|
||||
variable = data.get('variable')
|
||||
file = data.get('name')
|
||||
if program_name != file:
|
||||
start_gdb_session(f'{file}')
|
||||
|
||||
try:
|
||||
result = execute_gdb_command(f"watch {variable}")
|
||||
response = {
|
||||
'success': True,
|
||||
'result': result,
|
||||
'code': f"execute_gdb_command('watch {variable}')"
|
||||
}
|
||||
except Exception as e:
|
||||
response = {
|
||||
'success': False,
|
||||
'error': str(e),
|
||||
'code': f"execute_gdb_command('watch {variable}')"
|
||||
}
|
||||
|
||||
return jsonify(response)
|
||||
|
||||
@app.route('/delete_breakpoint', methods=['POST'])
|
||||
def delete_breakpoint():
|
||||
global program_name
|
||||
data = request.get_json()
|
||||
breakpoint_number = data.get('breakpoint_number')
|
||||
file = data.get('name')
|
||||
if program_name != file:
|
||||
start_gdb_session(f'{file}')
|
||||
|
||||
try:
|
||||
result = execute_gdb_command(f"delete {breakpoint_number}")
|
||||
response = {
|
||||
'success': True,
|
||||
'result': result,
|
||||
'code': f"execute_gdb_command('delete {breakpoint_number}')"
|
||||
}
|
||||
except Exception as e:
|
||||
response = {
|
||||
'success': False,
|
||||
'error': str(e),
|
||||
'code': f"execute_gdb_command('delete {breakpoint_number}')"
|
||||
}
|
||||
|
||||
return jsonify(response)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(host='0.0.0.0', port=10000)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue